什么是REST以及 RESTful?

时间:2020-05-12
本文章向大家介绍什么是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架构的主要原则:

  • 网络上的所有事物都被抽象为资源
  • 每个资源都有一个唯一的资源标识符
  • 同一个资源具有多种表现形式(xml,json等)
  •  对资源的各种操作不会改变资源标识符
  • 所有的操作都是无状态的

如何对资源操作

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

Spring对RESTful的支持:

  • 利用@RequestMapping 指定要处理请求的URI模板和HTTP请求的动作类型
  • 利用@PathVariable讲URI请求模板中的变量映射到处理方法参数上
  • 利用Ajax,在客户端发出PUT、DELETE动作的请求
 @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/> 


原文地址:https://www.cnblogs.com/aaawei/p/12878274.html