Fork me on GitHub

怎么设计一个好的resful web service

识别资源

设计uri并选择合适的http方法和返回码

  • 合理的利用分隔符表述资源之间的层次关系
    • 例如 : /user/{id}/
  • 使用逗号或者分号表述非层次关系(实际应用很少用)
  • 使用连接字符“-” “_” 改善长路径名称可读性
  • 避免出现一些后缀名
  • 使用& 区分参数

    设计资源的表述

    合适的 资源的力度

    服务端
  • 网络效率
  • 表述资源的多少,是否需要多一次性传入
  • 客户端易用性
    客户端
  • 可缓存性
  • 可变性
  • 修改频率
    1
    2
    3
    4
    5
    6
    7
    8
    动作   | 安全/幂等  | 用途 
    Get | Y/Y | 获取信息
    post | N/N | 创建,更新,批量更新
    delete | N/Y | 删除资源
    put | N/Y | 更新资源或者完全替换资源
    head | Y/Y | 同get 获取header 信息,但是没有响应体
    options | Y/Y | 获取资源支持的http方法列表
    trace | Y/Y | 让服务器返回其收到的http头
1
2
3
4
5
6
7
8
状态码 | 描述  | 状态码  |  描述
200 | ok | 400 | bad request
201 | created | 401 | unauthorized
202 | accepted | 403 | forbidden
301 | moved permanently | 404 | not found
303 | see other | 410 | gone
304 | not modified | 500 | internal server error
307 | temporary redirect | 503 | service unavailable

什么是HATEOAS?

hybermedia as the engine of applications state
rest 统一接口必要重要的组成部分

认识下HAL

hypertext application language 为api 提供简单一致的链接
模型:

- 链接
- 内嵌资源
- 状态

springboot-data-rest
@RepostoryRestResource
Resource
PagedResource

本文欢迎转载,但是希望注明出处并给出原文链接。 如果你有任何疑问,欢迎在下方评论区留言,我会尽快答复。 如果你喜欢或者不喜欢这篇文章,欢迎你发邮件到 alonecong@126.com 告诉我你的想法,你的建议对我非常重要。

------ 本文结束感谢您的阅读! ------
0%