0

要求されたバージョンがサポートされていない場合は、HTTP 406 を返したいと思います。ので、私は持っています:

services.AddApiVersioning(options =>
{
   options.ReportApiVersions = true;
   options.AssumeDefaultVersionWhenUnspecified = false;
   options.ApiVersionReader = new MediaTypeApiVersionReader();
});
services.AddMvc(options =>
{
   options.RespectBrowserAcceptHeader = true;
   options.ReturnHttpNotAcceptable = true;  // Return HTTP 406
});

ただし、バージョンが正しい場合でも、これは常に HTTP 406 を返します (例: application/json;v=1.0 または application\vnd.acme+json;v=1)。

falseに設定ReturnHttpNotAcceptableすると、バージョンがサポートされていない場合は HTTP 400 (Bad Request) が返され、バージョンがサポートされている場合は HTTP 200 が返されます。

また、 myApiVersionReaderを にHeaderApiVersionReader設定ReturnHttpNotAcceptableして true に設定すると、バージョンがサポートされていない場合、406 ではなく HTTP 400 が返されます。

バージョニングを完全に無効にすると、HTTP 406ReturnHttpNotAcceptableが true に設定されて正しく取得されます。たとえば、リクエストがappliction/xmlXML をサポートしていて、API が XML をサポートしていない場合です。

Github の ASP.NET API Versioning でこの質問をしましたが、これは私が理解していないものであり、このフォーラムから回答を得ることができるかどうか疑問に思っています。

4

1 に答える 1