Подтвердить что ты не робот

Лучше ли всегда возвращать HttpResponseMessage в Web Api?

Мне это интересно некоторое время, лучше ли всегда возвращать HttpResponseMessage web, используя asp.net mvc web api?

Когда я загружаю проект webapi по умолчанию, я вижу, что он не использует его в контроллере образца

 // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        public string Get(int id)
        {
            return "value";
        }

Я думал, что HttpResponseMessage обертывает все вокруг и делает его хорошим Http-запросом. Если это правильно, то в чем преимущество не только его использования?

4b9b3361

Ответ 1

Я всегда возвращаю HttpResponseMessage. Точка веб-API должна быть способна отображать HTTP-api. Притворяясь, что вы возвращаете объект, а затем полагаетесь на конвейер фреймов для преобразования объекта в HTTPResponseMessage, просто скрывается намерение IMO.

Я уверен, что если вы заплатите дополнительную стоимость за создание самого HttpResponseMessage, вы поймете, как работает веб-API. Вы столкнетесь с меньшими проблемами, потому что у вас больше шансов избежать использования веб-API, что вы не ожидали. Вы, скорее всего, воспользуетесь возможностями HTTP, потому что заголовки находятся там, где вы можете получить доступ.

Ответ 2

Для разделения проблем, почему не имеет уровня обслуживания (сильные типизированные методы в библиотеке классов) и уровня webservice (ASP.NET WEB API).
Уровень сервиса можно легко использовать в Winform, WPF, Console и тестовых проектах без зависимости Http, а также может быть представлен как веб-сервис ASPNET WebAPi, например, для мобильного приложения и/или javascript.
Опасность веб-сервисов заключается в том, чтобы разоблачить сервисный уровень с проблемами http (заголовки, тип контента, http status..), чтобы вы могли вернуть HttpResponseMessage.
Это также делает контроллер очень тонким, и вы можете ввести услугу с помощью DI