@ResponseBody和Spring休息服务

时间:2014-09-03 02:35:41

标签: json spring rest

我是初次休息服务的新手,我有点困惑。如果我有一个需要JSON响应的Ajax请求,那么我将@ResponseBody注释添加到我的方法中,它给了我对象的JSON。

但是,如果我必须提供宁静的服务,那么即使我必须这样做。我为ajax创造了一个宁静吗?

2 个答案:

答案 0 :(得分:0)

@ResponseBody - 指示方法返回值的注释应绑定到Web响应主体。 (java doc查看更多信息here

所以它的所有统计信息都是方法返回类型应直接写入HTTP响应体(而不是放在模型中,或解释为视图名称)

结果在体内的呈现将受到少数参数的影响 我建议阅读以下有关内容协商的section

Spring将使用自己的启发式方法来确定所请求的响应呈现:

文档总结了以下段落:

  

可用选项是检查请求中的文件扩展名   URI,"接受"标头,请求参数,以及后退   在默认内容类型上。默认情况下,请求中的文件扩展名   首先检查URI,然后接受"接受"接下来检查标题。

您可以使用@RequestMapping指定接受标头。

<mvc:annotation-driven>元素具有content-negotiation-manager属性。 默认情况下,它将与版本4中的Jackson 2一起使用,因此您只需将以下内容添加到类路径

<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.3.0</version>
</dependency>

在客户端,您可以使用Ajax或使用直接URL调用来使用结果。 只要请求正确的内容类型,客户端技术就没有区别。 如果您收到错误406 - 您的内容类型定义与您的请求相冲突

您可以查看以下示例here

答案 1 :(得分:0)

看你需要了解什么是宁静的webservices。 restful webservices是一种方法论,其中所有可用的http方法都映射到CURD(创建更新读取删除)

Operation   SQL     HTTP    
Create      INSERT  POST    
Read        SELECT  GET 
Update      UPDATE  PUT 
Delete      DELETE  DELETE  

所以它被称为restful webservice。如果你没有遵循这个策略,那么它不是。