restful风格

    1. RESTful是什么?
  1. RESTful对应的中文是 REST式的。
  2. RESTful Web Service是一种常见的REST的应用,是遵守了REST风格的web服务。
  3. REST式的web服务是一种ROA(面向资源的架构)

 

REST 架构的主要原则

  1. 网络上的所有事物都可被抽象为资源(Resource) 
  2. 每个资源都有一个唯一的资源标识符(Resource Identifier)
  3. 同一资源具有多种表现形式(xml、json等)
  4. 对资源的各种操作不会改变资源标识符
  5. 所有的操作都是无状态的(Stateless)
  6. 符合REST原则的架构方式即可称为RESTful

 

  1. URI和URL
  2. RESTful风格的一大特色就是使用URI来标识资源。
  3. URI 和 URL

http://example.com/users/

  1. 无状态性
  2. 无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前 Request,而不必了解前面 Request 的历史。
  3. 从而可以更容易地释放资源。
  4. 让服务器充分利用 Pool 技术来提高稳定性和性能。

 

  1. 资源操作
  2. http://ip /users/

      传统处理             rest风格处理             处理内容

select方法       标明请求是GET方式         获取资源 (查询)

  1. save方法         标明请求是POST方式       创建一个新的资源 (添加)
    • update方法      标明请求是PUT 方式        修改一个资源的状态 (修改)
      DELETE 方法      标明请求是DELETE           删除一个资源  (删除)
  2. 资源展现
    • XML
    • JSON

 

 

以前的API开发:

http://127.0.0.1/user/list  GET  --  查询用户列表

http://127.0.0.1/user/save  POST  -- 新增用户

http://127.0.0.1/user/update POST -- 更新用户数据

http://127.0.0.1/user/delete POST -- 删除数据

 

RESTful Web Service Api开发:

http://127.0.0.1/user  GET  --  查询用户列表

http://127.0.0.1/user  POST  -- 新增用户

http://127.0.0.1/user  PUT -- 更新用户数据

http://127.0.0.1/user  DELETE -- 删除数据

 

    1. 最佳实践:REST接口设计
  1. URL的组成
    • 网络协议(http、https)
    • 服务器地址
    • 接口名称
    • ?参数列表

 

  1. URL定义限定
    • 不要使用大写字母 --- restfuladdUser.jsp或者add_user.jsp是不好的方式
    • 使用中线 - 代替下划线 _      add-user.jsp是比较好的方式
    • 参数列表应该被encode过

 

    1. 最佳实践:响应设计
  1. Content body 仅仅用来传输数据。
  2. 数据要做到拿来就可用的原则,不需要“拆箱”的过程。
  3. 用来描述数据或者请求的元数据放Header中,例如 X-Result-Fields。

 

页面的处理

<form action="/rest/test" method="post">
	<input type="hidden" name="_method" value="put"/>
	编号:<input type="text" name="id"><br>
	姓名:<input type="text" name="name"><br>
	<input type="submit" value="put修改" ><br>
	</form>
	
	<form action="/rest/test" method="post">
	<input type="hidden" name="_method" value="delete"/>
	编号:<input type="text" name="id"><br>
	姓名:<input type="text" name="name"><br>
	<input type="submit" value="delete删除" ><br>
	</form>

ajax的处理

 if (r){
        	    	var params = {"ids":ids,"_method":"delete"};
        	    	//$.post("/rest/item/delete",params, function(data){
                	$.post("/rest/item",params, function(data){
                		if(data.status == 200){
            				$.messager.alert('提示','删除商品成功!',undefined,function(){
            					$("#itemList").datagrid("reload");
            				});
            			}else{
            				$.messager.alert('提示','删除商品失败!',undefined,function(){
            					$("#itemList").datagrid("reload");
            				});
            			}
            		});
        	    }

web.xml中的配置

<!-- restful风格,put处理 --> 
  <filter>
    <filter-name>HttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
 <!-- restful风格,delete处理 -->
  <filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值