welcome to xlongwei.com

欢迎大家一起学习、交流、分享


QQ:9167702333 邮箱:admin@xlongwei.com

RESTful 接口设计注意事项


分类 Java   关键字 分享   标签 java   web   发布 hongwei  1436257186801
注意 转载须保留原文链接,译文链接,作者译者等信息。  
REST的全称是Representation State Transfer,它描述了一种设计Web应用的架构风格,它是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是 RESTful风格的。REST原则如下:
  • 资源由URI来指定,URI是资源唯一的ID
  • 显示的使用HTTP方法,POST=create,GET=read,PUT=update,DELETE=delete
  • 资源多重表述,包括JSON、XML、HTML等
  • 无状态,不依赖同一台服务器接收请求

接口路径范例
  • 模式,http(s)://server.com/app-name/{version}/{domain}/{rest-convention}
  • /order,post,创建order
  • /order/{id},get+put+delete,读取+修改+删除order
  • /orders,get或post,列表+分页+搜索
  • /order/{id}/items,get或post,订单的子项列表
  • /order/{id}/item,post,订单的子项创建
  • /order/{oid}/item/{iid},get+put+delete,订单的子项编辑

由于表单仅支持get/post请求,就算手动设定action="put"请求还是会变成get方式,这时需要提交_method参数,服务器端需要配置HiddenHttpMethodFilter。
<form method="post">
<input type="hidden" name="_method" value="put">
<input type="submit">
</form>
web.xml
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

ajax请求依然需要提交_method参数
appcan.ajax({
type: 'post',
url: HHMAS,
data: {
_method:'put',
},
dataType: 'json',
success: function(data, status, requestCode, response, xhr) {
if(requestCode==200){
alert(JSON.stringify(data))
}
}
});