我正在尝试使用新的Spring 4.0 @RestController从控制器返回一个简单的文本响应:
@RestController @RequestMapping(value = "/heartbeat") public class HeartbeatController { private static final Logger logger = LoggerFactory.getLogger(HeartbeatController.class); @RequestMapping public String heartbeat() { logger.info("Received heartbeat!"); return "I'm Alive!"; } @RequestMapping(value = "/test", produces = MediaType.TEXT_PLAIN_VALUE) public String heartbeat2() { logger.info("Received heartbeat!"); return "I'm Alive!"; } }
当我访问/心跳然后我回来:
"I'm Alive!"
结果包括双引号,我没想到的.
当我访问/ heartbeat/test然后我得到一个空响应,但我希望我活着!文本.
UPDATE
curl -i http://myserver.com/rest/heartbeat
HTTP/1.1 200 OK内容类型:application/json; charset = UTF-8服务器:开发/ 1.0日期:2013年12月17日星期二18:59:08 GMT缓存控制:无缓存过期:1990年1月1日星期五00:00:00 GMT内容长度:12
"我还活着!"
curl -i -H"Accept:application/json" http://myserver.com/rest/heartbeat HTTP/1.1 200 OK Content-Type:application/json; charset = UTF-8 Server:Development/1.0日期:星期二, 2013年12月17日19:01:12 GMT Cache-Control:no-cache Expires:Fri,01 Jan 1990 00:00:00 GMT Content-Length:12
"我还活着!"
curl -i http://myserver.com/rest/heartbeat/test
HTTP/1.1 406不可接受服务器:开发/ 1.0日期:2013年12月17日星期二19:00:13 GMT Cache-Control:no-cache Expires:Fri,01 Jan 1990 00:00:00 GMT Content-Length:0
curl -i -H"Accept:text/plain" http://myserver.com/rest/heartbeat/test
HTTP/1.1 406不可接受服务器:开发/ 1.0日期:2013年12月17日星期二19:02:06 GMT缓存控制:无缓存过期:星期五,01年1月1日00:00:00 GMT内容长度:0
我发现我在WebConfig的configureMessageConverters中缺少StringHttpMessageConverter.我正在配置消息转换器来控制Jackson ObjectMapper.
@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); mappingJackson2HttpMessageConverter.setPrettyPrint(SystemProperty.environment.value() == Development); mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper()); converters.add(mappingJackson2HttpMessageConverter); converters.add(new StringHttpMessageConverter()); // THIS WAS MISSING }