Вы можете использовать атрибут headers аннотации @RequestMapping.
@RequestMapping(value = "/pets", method = RequestMethod.POST, headers="content-type=text/*")
, чтобы сузить тип контента запросов, которые будет обрабатывать ваш метод.
edit:
Если вы хотите отправить другой тип контента в теле запроса, то единственное, что вам нужно сделать, это определить MessageConverter (я полагаю, вы это уже сделали) и аннотировать ваш методпараметр с
@RequestBody
Spring должен десериализовать тело вашего запроса, используя определенный вами MessageConverter.
Итак, если у вас есть что-то вроде:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<util:list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</util:list>
</property>
</bean>
<bean id="contentNegotiatingViewResolver" class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<util:map>
<entry key="json" value="application/json"/>
</util:map>
</property>
<property name="defaultViews">
<util:list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
</util:list>
</property>
</bean>
в вашей пружинеконтекст.
Аннотируйте ваш метод следующим образом:
@RequestMapping(method=PUT, value="/user/{user_id}")
public void putUser(@RequestBody User user, @PathVariable int user_id) {
...
}
должен выполнить работу.