@ request mapping (value='/produces ',produces='application/json ' )表示功能处理方法为json格式的数据,在这种情况下,为请求标头中的“AAA
@ request mapping (value='/produces ',produces='application/xml ' )表示功能处理方法是xml格式的数据,在这种情况下,为请求标头接受
与使用@RequestMapping中的“headers=' accept=application/JSON '”相比,此方法更能表明您的目的。
服务器控制器代码cn.javass.chapter6. web.controller.consumes produces.produces controller;
客户端代码类似于以前的Content-Type客户端。 有关详细信息,请参阅ProducesController.java代码。
甜蜜的冥王星有以下Accept头部:
Accept:text/html,application/xml,application/json
produces的匹配text/htmlAPP/XMLAPP/JSON按以下顺序进行
接受: APP/XML; q=0.5,APP/JSon; q=0.9,text/html
produces的匹配text/htmlAPP/JSONAPP/XML按以下顺序进行
q参数是介质类型的质量系数,越大,优先级越高(0到1 )。
Accept:*/*,text/*,text/html
按照以下步骤进行produces的匹配text/html text/* */*
也就是说,匹配规则是最明确的优先匹配。
有关代码的详细信息,请参阅ProducesPrecedenceController1、ProducesPrecedenceController2和ProducesPrecedenceController3。
三.窄化时是覆盖而不是继承
类级别映射为@requestmapping(value='/narrow ', produces='text/html ' ),方法级别为@ request mapping (produces=' applicating ),并且请求标头“accept : application”
有关详细信息,请参阅cn.javass.chapter6. web.controller.consumes produces.narrow controller。
仅涵盖生产者/消费者模式,其他使用方式为继承,如headers、params等为继承。
四、配合使用是“或”的关系
@ request mapping (produces={ ' text/html ',' application/json'} )可以是“Accept:text/html”或“accept 3360 apt”
五.问题
消耗的数据,例如JSON数据、XML数据,都是读取我们要求的InputStream,根据需要自己转换为合适的模型数据,所以很麻烦;
生产数据(如JSON数据和XML数据)将模型数据转换为数据(如json/xml ),然后输出响应流也很麻烦。