Spring boot controller content negotiation

前端 未结 2 1570
猫巷女王i
猫巷女王i 2020-12-03 01:31

I have a simple REST controller written in a Spring-boot application but I am not sure how to implement the content negotiation to make it return JSON or XML based on the Co

2条回答
  •  鱼传尺愫
    2020-12-03 02:14

    You can find some hints in the blog post @RequestMapping with Produces and Consumes at point 6.

    Pay attention to the section about Content-Type and Accept headers:

    @RequestMapping with Produces and Consumes: We can use header Content-Type and Accept to find out request contents and what is the mime message it wants in response. For clarity, @RequestMapping provides produces and consumes variables where we can specify the request content-type for which method will be invoked and the response content type. For example:

    @RequestMapping(value="/method6", produces={"application/json","application/xml"}, consumes="text/html")
    @ResponseBody
    public String method6(){
        return "method6";
    }
    

    Above method can consume message only with Content-Type as text/html and is able to produce messages of type application/json and application/xml.

    You can also try this different approach (using ResponseEntity object) that allows you to find out the incoming message type and produce the corresponding message (also exploiting the @ResponseBody annotation)

提交回复
热议问题