restful风格,restcontroller与controller

初步接触springmvc的时候,被要求使用restful风格,彼时一头雾水,不懂何谓restful,参阅了很多资料,慢慢的接触的也越来越多,如今spring的况且已基本运用熟练,简单谈一下我的一些看法,当然,只是我自己的浅显粗陋的见解,不对的地方还望指正。

restful风格

简单的理解,restful是一种url风格,或者说是规范,在以前的网址中,假定一个业务,取得数据网址为http://test/get,添加信息的网址为http://test/post,类似这样。 
但是在restful风格中,取得数据和添加数据的网址均应为http://test,方法为get或者post;所以,在restful风格中,一个网址就是一个资源,其形式类似于http://xxx.com/xx/{id}/{id} ,例如某购物网站,产品有很多种类,每种产品下有很多子类型,那么http://shop.com/laptop/lenovo/1103 代表了联想1103型号电脑,而http://shop.com/laptop/hp/1024 代表了2014型号电脑。

在spring mvc中,有@requestparm, @requestbody和@pathvariable 三种注解来获得浏览器端的参数,其中前两者都是由浏览器post提交的参数,而@pathvariable 则是从网址中取得参数;假设代码如下:

@Requestmapping(value="/{category}/{brand}/{id},method=RequestMethod.POST)
public void getbyid(@PathVariable("category") String category
                                     @PathVariable("brand") String brand
                                     @PathVariable("id") String id){
                                     //具体代码略
                                     }

在上述代码中,访问http://shop.com/laptop/hp/1024网址时,则,category为“laptop”,brand为”hp”,id为”1024”;所以说,在restful风格中,一个网址即表示了一个资源。

restcontroller与controller

假定一个user对象,对象有很多属性(name,sex,age,birth,address,tel) 
在我的了解中,这二者的区分为:@restcontroller为@controller和@responsebody的结合 
在@controller注解中,返回的是字符串,或者是字符串匹配的模板名称,即直接渲染视图,与html页面配合使用的,
在这种情况下,前后端的配合要求比较高,java后端的代码要结合html的情况进行渲染,使用model对象(或者modelandview)的数据将填充user视图中的相关属性,然后展示到浏览器,这个过程也可以称为渲染; 
java示例代码如下:

@Controller
@RequestMapping(method = RequestMethod.GET, value = "/")
    public String getuser(Model model) throws IOException {

        model.addAttribute("name",bob);
        model.addAttribute("sex",boy);
        return "user";//user是模板名
    }

对应视图user.jsp中的html代码:
<html xmlns:th="http://www.thymeleaf.org">
<body>
    <div>
        <p>"${name}"</p>
        <p>"${sex}"</p>
    </div>
</body>
</html>

而在@restcontroller中,返回的应该是一个对象,即return一个user对象,这时,在没有页面的情况下,也能看到返回的是一个user对象对应的json字符串,而前端的作用是利用返回的json进行解析渲染页面,java后端的代码比较自由。 

java端代码:

@RestController
@RequestMapping(method = RequestMethod.GET, value = "/")
    public User getuser( ) throws IOException {
        User bob=new User();
        bob.setName("bob");
        bob.setSex("boy");
        return bob;
    }

访问网址得到的是json字符串{“name”:”bob”,”sex”:”boy”},前端页面只需要处理这个字符串即可。

http://blog.csdn.net/pinebud55/article/details/52183238?locationNum=12

 

时间: 2024-09-17 04:51:12

restful风格,restcontroller与controller的相关文章

Yii2框架制作RESTful风格的API快速入门教程_php实例

先给大家说下什么是REST restful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一. 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强.性能好.适宜通信的架构.REST指的是一组架构约束条件和原则." 如

laravel路由创建RESTFul风格控制器实现文章增删改查

基本控制器及控制器路由.控制器中间件都比较简单,这里不再赘述,相关文档参考HTTP 控制器文档一节. 1.创建RESTFul风格控制器 注:关于什么是RESTFul风格及其规范可参考这篇文章:理解RESTful架构. 本文我们主要讨论创建一个RESTFul风格的控制器用于对博客文章进行增删改查,创建这样的控制器很简单,在应用根目录运行如下Artisan命令即可: php artisan make:controller PostController 该命令会在app/Http/Controller

Yii2框架制作RESTful风格的API快速入门教程

先给大家说下什么是REST restful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一. 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强.性能好.适宜通信的架构.REST指的是一组架构约束条件和原则." 如

RESTful风格的支持实践

RESTful方式的访问确实即方便又易用,确实是非常不错的一种架构模式.前面一直嘴馋了好长时间,但是由于时间及人员关系,一直没有启动,刚开年,时间也有了,人员也到位了,没啥说的,开工! 本人的习惯,在开工之前,先去学习.研究.了解别人是怎么做的,在看了大量的文档及Roy Thomas Fielding博士的论文还有大量的实践之后,对于它是个啥,解决了啥等等有了比较充分的认识,接现来就是实现了. 程序员同学的第一想法是采用Spring中的RESTful方案来进行解决,这个当然马上被我否掉,原因是这

关于REST风格的SpringMVC Controller 传递多个参数的问题

问题描述 关于REST风格的SpringMVC Controller 传递多个参数的问题 /** * * * Description: 预更新操作根据用户名查询用户信息 然后数据交给携带体 展示到视图 REST风格: /更新的用户的用户名/update * @param username @PathVariable修饰 表示形参同URL中的请求参数 * @param model 携带数据的Model * @return 视图页面/WEB-INF/jsp/user/update页面 * */ @R

RESTful风格的Web服务框架 Swagger

Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步.Swagger 让部署管理和使用功能强大的API从未如此简单.   创建工程   1.REST API import javax.ws.rs.Consumes;      import javax.ws.rs.GET;      import javax.ws

springMVC spring3.1 hibernate4 cxf整合发布restful风格的webservice

问题描述 现在的问题是通过controller访问service是正常的,用cxf发布的webservice  就不访问不了service,报错:org.apache.cxf.interceptor.Fault: No Session found for current threadat org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162)at org.apache.cxf.ser

Swagger 1.5.14 发布,RESTful 风格的 Web 服务框架

Swagger 1.5.14 已发布.v1.5.14 添加了一些功能,修复了一些问题. 新功能: 升级 logback 至 1.2.3 #2182 来自命名空间注释更好的支持 XML #2246 支持 Jackson 的 @JsonSerializeAs 注释 #2147 升级 .equals 和 .hashcode #2168 Support getter-less model scanning #2251 修复: Null check in setRequired(...) method i

关于各大平台API为什么不使用restful的风格

问题描述 各位,我想问一下为什么目前各大平台的webapi都没有按照restful的风格来进开发的呢,动词,url命名格式,只有postget并没有putdelete,更加没有用到httpstatuscode,他们是出于什么目的这样开发和设计,我很想知道,请各位有知道的朋友能告诉我一下,谢谢! 解决方案 解决方案二:因为支持那些行为能带来的好处显然不及要付出的代价解决方案三:你知道Restful不代表所有人都知道Restful,就算知道,每个人对Restful的理解也不一致解决方案四:觉得有用就