如果所請求的版本不受支持,我想返回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(錯誤請求),如果支持版本,則獲取HTTP 200。
此外,如果我將ApiVersionReader
設置爲HeaderApiVersionReader
,並將ReturnHttpNotAcceptable
設置爲true,那麼當版本不受支持時,它會返回HTTP 400而不是406。
如果我停用版本乾脆,我得到HTTP 406正確地ReturnHttpNotAcceptable
設置爲true,如果說,要求有appliction/xml
和API不支持XML。
我在ASP.NET API Versioning on Github上問了這個問題,但我想知道這是不是我想不出來的,並且可以從這個論壇得到答案。