SpringMVC05 RESTful风格

1、RESTful 是什么
RESTful 是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

2、传统方式操作资源

  • 查询(GET)http://127.0.0.1/item/queryUser?id=1
  • 新增(POST)http://127.0.0.1/item/saveUser
  • 更新(POST)http://127.0.0.1/item/updateUser
  • 删除(GET或POST)http://127.0.0.1/item/deleteUser?id=1

3、RESTful 的请求方式
可以通过 GET、 POST、 PUT、 PATCH、 DELETE 等方式对服务端的资源进行操作。其中,GET 用于查询资源,POST 用于创建资源,PUT 用于更新服务端的资源的全部信息,PATCH 用于更新服务端的资源的部分信息,DELETE 用于删除服务端的资源。

public enum RequestMethod {
	GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
}

4、RESTful 操作资源

  • 查询列表(GET)http://127.0.0.1/item/users
  • 查询单个用户(GET) http://127.0.0.1/item/users/1
  • 新增用户(POST) http://127.0.0.1/item/users
  • 更新某个用户信息(部分字段更新)(PATCH)http://127.0.0.1/item/users/1
  • 更新某个用户信息(全部字段更新)(PUT)http://127.0.0.1/item/users/1
  • 删除某个用户信息(DELETE)http://127.0.0.1/item/users/1

5、RESTful 好处
让url 不暴露具体字段信息,安全;还有不需要去用动作描述接口名,直接用请求方式就可以了,还可以复用url

6、API设计风格基本规则

  • 使用名词而不是动词
不要使用:/getAllUsers;/createNewUser;/deleteAllUser;restful 风格可以帮助避免这一点。
  • Get方法和查询参数不应该改变资源状态
使用PUT, POST 和DELETE 方法 而不是 GET 方法来改变状态,不要使用GET 进行状态改变
  • 使用复数名词
/cars instead of /car
/users instead of /user
/products instead of /product
/settings instead of /setting
  • 使用子资源表达关系
GET /cars/711/drivers/       // 返回 car 711的所有司机
GET /cars/711/drivers/4      // 返回 car 711的4号司机
  • 使用HTTP头决定序列化格式
在客户端和服务端都需要知道使用什么格式来进行通信,这个格式应该在HTTP头中指定:
Content-Type:定义请求的格式;
Accept :定义允许的响应格式的列表
  • 使用Http状态码处理错误
如果你的API没有错误处理是很难的,只是返回500和出错堆栈不一定有用

Http状态码提供70个出错,我们只要使用10个左右:

200 – OK – 一切正常
201 – OK – 新的资源已经成功创建
204 – OK – 资源已经成功擅长

304 – Not Modified – 客户端使用缓存数据

400 – Bad Request – 请求无效,需要附加细节解释如 "JSON无效"
401 – Unauthorized – 请求需要用户验证
403 – Forbidden – 服务器已经理解了请求,但是拒绝服务或这种请求的访问是不允许的。
404 – Not found – 没有发现该资源
422 – Unprocessable Entity – 只有服务器不能处理实体时使用,比如图像不能被格式化,或者重要字段丢失。

500 – Internal Server Error – API开发者应该避免这种错误。

使用详细的错误包装错误:

{

  "errors": [

   {

    "userMessage": "Sorry, the requested resource does not exist",

    "internalMessage": "No car found in the database",

    "code": 34,

    "more info": "http://dev.mwaysolutions.com/blog/api/v1/errors/12345"

   }

  ]

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值