要求されたバージョンがサポートされていない場合は、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/xml
XML をサポートしていて、API が XML をサポートしていない場合です。
Github の ASP.NET API Versioning でこの質問をしましたが、これは私が理解していないものであり、このフォーラムから回答を得ることができるかどうか疑問に思っています。