您能否建议我如何编写处理不同类型“ContentType”消息的Spring REST Web服务?
1.application/json
2.application/xml
3.application/x-www-form-urlencoded
在org.springframework.web.servlet.view.ContentNegotiatingViewResolver API的帮助下?
此致 Vasanth D
答案 0 :(得分:1)
假设您有一个Pizza对象,您可能会这样做。
@Controller
@RequestMapping(value = "pizzas")
public class PizzaController {
private final PizzaService service;
@Autowired
public PizzaController(final PizzaService pizzaService) {
this.service = pizzaService;
}
@RequestMapping(
method = RequestMethod.POST,
consumes = {
MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE,
MediaType.APPLICATION_FORM_URLENCODED_VALUE
}
)
@ResponseBody
@ResponseStatus(value = HttpStatus.CREATED)
public Pizza create(@RequestBody Pizza pizza) {
return service.create(pizza);
}
@RequestMapping(
value = "{id}",
method = RequestMethod.PUT,
consumes = {
MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE,
MediaType.APPLICATION_FORM_URLENCODED_VALUE
}
)
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
public Pizza update(@RequestBody Pizza pizza) {
return service.update(pizza);
}
@RequestMapping(
value = "{id}",
method = RequestMethod.GET,
consumes = {
MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE,
MediaType.APPLICATION_FORM_URLENCODED_VALUE
}
)
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
public Pizza read(@RequestParam("id") Long id) {
return service.get(id);
}
@RequestMapping(
value = "{id}",
method = RequestMethod.DELETE,
consumes = {
MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE,
MediaType.APPLICATION_FORM_URLENCODED_VALUE
}
)
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
public Pizza delete(@RequestParam("id") Long id) {
return service.delete(id);
}
}
如果您使用的是Spring 4,则可以删除所有@ResponseBody
注释,并将@Controller
替换为@RestController
。