2014-01-07 9 views
1

У меня есть веб-API и вы хотите сделать тип контента необязательным.REST WEB API: как сделать заголовок Content-Type необязательным?

В настоящее время, если я игнорировал заголовок Content-Type при вызове метода REST (POST), он выдает ошибку.

Это, как я определил маршрут в Web API -

routes.MapHttpRoute(
    name: "myMethodPost", 
    routeTemplate: "api/{id}/Settings/{settings}", 
    defaults: new { controller = "Settings", action = "updateSettings" }, 
    constraints: new { httpMethod = new HttpMethodConstraint("POST") } 
); 

при вызове этого метода -

api/1/Settings/testSettings 
method = "Post" 

он бросает ошибку. но при добавлении следующих элементов -

apiRequest.ContentType = "application/json"; 

он отлично работает.

Теперь, как сделать заголовок Content-Type необязательным?

+0

Почему вы хотите сделать это необязательным? если запрос имеет тело, а не заголовок типа контента, то веб-API не может определить, какой форматтер выбрать для десериализации тела запроса ... каков ваш точный сценарий? –

+0

@KiranChalla, да, вы правы .... У меня есть настраиваемый тип в списке параметров, и он не связывает параметр только из-за отсутствия ContentType. –

+0

Сущность без типа содержимого не является сущностью, это всего лишь пучок или случайные 1 и 0, что ничего не значит. Почему бы не исправить ошибку, когда клиент не отправляет тип контента, а не вводит ошибку, где сервер это позволит? –

ответ

2

Вы можете создать обработчик сообщений на сервере, который будет устанавливать Content-Type в 'application/json', если он отсутствует, и существует тело с ненулевой длиной. Таким образом, клиент не должен отправлять его.

+0

любой пример ...? –

+0

Я добавил обработчик сообщений и написал эту строку - request.Headers.Accept.Add (новый MediaTypeWithQualityHeaderValue ("application/json")); но все же параметр настраиваемого типа пуст –

+1

Ну, я получил его, я добавил следующее в обработчике сообщений - "request.Content.Headers.ContentType = new MediaTypeHeaderValue (" application/json ");" –

 Смежные вопросы

  • Нет связанных вопросов^_^