Я смотрю документацию по WebAPI 2
, и я сильно разочарован тем, как результаты действий архивируются. Я действительно надеюсь, что есть лучший способ.
Итак, документация говорит, что я могу вернуть их:
**void** Return empty 204 (No Content)
**HttpResponseMessage** Convert directly to an HTTP response message.
**IHttpActionResult** Call ExecuteAsync to create an HttpResponseMessage, then convert to an HTTP response message.
**Other type** Write the serialized return value into the response body; return 200 (OK).
Я не вижу чистого способа вернуть массив элементов с настраиваемым кодом статуса HTTP, настраиваемыми заголовками и с автосогласованным контентом.
Что бы я хотел увидеть, это что-то вроде
public HttpResult<Item> Post()
{
var item = new Item();
var result = new HttpResult<Item>(item, HttpStatusCode.Created);
result.Headers.Add("header", "header value");
return result;
}
Таким образом, я могу взглянуть на метод и сразу увидеть, что возвращается, и изменить код состояния и заголовки.
Самое близкое, что я нашел, это NegotiatedContentResult<T>
, с странной сигнатурой (зачем нужен экземпляр контроллера?), но нет способа установить настраиваемые заголовки?
Есть ли лучший способ?