我綁得與設置狀態代碼一個很好的和簡單的API,並得到招搖(swashbuckle)的設置狀態代碼和內容
首先文檔,我的控制器是這樣的:
public class ValuesController : ControllerBase
{
[SwaggerResponse(HttpStatusCode.OK, Type = typeof(List<Value>))]
[HttpGet, System.Web.Mvc.Route("api/values/")]
public async Task<List<Value>> GetValues(HttpRequestMessage request)
{
using (DatabaseContext context = new DatabaseContext())
{
return await context.Values.Take(10).ToListAsync();
}
}
}
一切都很好,Swagger顯示json格式的結果。問題是,我無法設置狀態碼(例如,如果數據庫錯誤,我可以設置爲Err 500或s.th.)。
Here我讀,用於設置狀態代碼,我們需要返回HttpResponseMessage
所以我修改了代碼:
public class ValuesController : ControllerBase
{
[SwaggerResponse(HttpStatusCode.OK, Type = typeof(HttpResponseMessage))]
[HttpGet, System.Web.Mvc.Route("api/values/")]
public async Task<HttpResponseMessage> GetValues(HttpRequestMessage request)
{
using (DatabaseContext context = new DatabaseContext())
{
var valuesToReturn = await context.Values.Take(10).ToListAsync();
return request.CreateResponse(HttpStatusCode.NotModified, valuesToReturn);
}
}
}
現在,狀態代碼是正確的,但招搖不顯示任何結果。
所以,我想這也許是一個招搖-問題。
下一步是檢驗以鉻合金飛鏢插件的API,但是相同的: 狀態代碼是304,但身體(結果/內容)是空的:
有關如何正確設置正文與HttpResponseMessage的任何想法? 或者,當返回值例如是什麼時,關於如何在api-method中設置狀態碼的想法。 List<Value>
?
是的,這也是一個問題。 –
@MatthiasBurger這是主要問題;)看我對我的回答的評論 –
@its_time_for_weekend該死的你們都是對的。剛剛用304測試過你的解決方案,但沒有奏效。很好,今天學到了一些東西 –