要求されたバージョンがサポートされていない場合、HTTP 406を返送したいと思います。MvcOptions.ReturnHttpNotAcceptableをApiVersioningと連携させるには
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が返されます(例えば、アプリケーション/ JSON; V = 1.0またはアプリケーションの\ vnd.acme + JSONを; V = 1):だから私は持っています。
ReturnHttpNotAcceptable
をfalseに設定すると、バージョンがサポートされていない場合はHTTP 400(Bad Request)が、バージョンがサポートされている場合はHTTP 200が取得されます。
また、ApiVersionReader
をHeaderApiVersionReader
に設定し、ReturnHttpNotAcceptable
をtrueに設定すると、バージョンがサポートされていない場合は、HTTPの代わりにHTTP 400が返されます。
バージョン管理を完全に無効にすると、ReturnHttpNotAcceptable
がtrueに設定されており、要求にappliction/xml
が設定されており、APIがXMLをサポートしていない場合、HTTP 406が正しく取得されます。
私はASP.NET API Versioning on Githubでこの質問をしましたが、これが私が理解できなかったものであるかどうか疑問に思っており、このフォーラムから回答を得ることができました。