其他分享
首页 > 其他分享> > 什么是REST以及 RESTful?

什么是REST以及 RESTful?

作者:互联网

前言:

  如果我们想要获取某个电商网站的某个商品,输入http://localhost:9999/products/123,就可以看到id为123的商品页面,但这个结果是HTML页面,它同时混合包含了Product的数据和Product的展示两个部分。对于用户来说,阅读起来没有问题,但是,如果机器读取,就很难从HTML中解析出Product的数据。

  如果一个URL返回的不是HTML,而是机器能直接解析的数据,这个URL就可以看成是一个Web API。比如,读取http://localhost:9999/api/products/123,如果能直接返回Product的数据,那么机器就可以直接读取。

REST就是一种设计API的模式。最常用的数据格式是JSON。由于JSON能直接被JavaScript读取,所以,以JSON格式编写的REST风格的API具有简单、易读、易用的特点。

  编写API有什么好处呢?由于API就是把Web App的功能全部封装了,所以,通过API操作数据,可以极大地把前端和后端的代码隔离,使得后端代码易于测试,前端代码编写更简单。

  此外,如果我们把前端页面看作是一种用于展示的客户端,那么API就是为客户端提供数据、操作数据的接口。这种设计可以获得极高的扩展性。例如,当用户需要在手机上购买商品时,只需要开发针对iOS和Android的两个客户端,通过客户端访问API,就可以完成通过浏览器页面提供的功能,而后端代码基本无需改动。

 

什么是RESTful?

  符合REST原则的架构方式即可称为RESTful。对应的中文是rest式的;Restful web service是一种常见的rest的应用,是遵守了rest风格的web服务;rest式的web服务是一种ROA(The Resource-Oriented Architecture)(面向资源的架构).

 

 

Rest架构的主要原则:

 

如何对资源操作

 

采用HTTP协议规定的GET、POST、PUT、DELETE动作处理资源的增删该查操作

 

 

Spring对RESTful的支持:

 @RequestMapping(value = "/{id}", method = RequestMethod.GET)
 public String toUpdate(@PathVariable("id") Integer id, Model model) {}

RequestMapping的一般应用格式

@RequestMapping(value = "/{id}", method = RequestMethod.GET)

@RequestMapping(value = "/{id}", method = RequestMethod.POST)

@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)   // 因为这个需要Ajax请求,所有返回的是个json

@ResponseBody
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)

客户端发送PUT,DELETE请求

 $.ajax( {  
           type : "DELETE",  
           url : "/spring_crud_restful/emp/deleteEmp/" + id,  
           dataType : "json",  
           success : function(data) {  
               alert(data);  
               location.href = "/spring_crud_restful/emp/listEmp/1";  
           }  
      });

静态资源访问处理

采用RESTful架构后,需要将web.xml中控制器拦截的请求设置为/,这样会将css,js等静态资源进行拦截,发送404错误。

 

<mvc:resources/>
<mvc:resources mapping="请求URI" location="资源位置" />
<mvc:default-servlet-handler/>
<mvc:default-servlet-handler/> 

 



标签:RequestMapping,以及,REST,RequestMethod,API,DELETE,RESTful,id,客户端
来源: https://www.cnblogs.com/aaawei/p/12878274.html