RESTful实战笔记二——REST API设计

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_38930706/article/details/98845382

统一接口REST VS RPC

REST使用HTTP协议的通用方法作为统一接口的词汇,方法信息都在HTTP方法里;

RPC服务提供的方法信息在SOAP/HTTP信封里。

REST方法设计

HTTP请求方法可以从安全性幂等性进行考虑:

安全性:外系统对该接口的访问不会使服务器资源的状态发生改变;

幂等性:外系统对统一REST接口访问得到的资源状态是相同的。

方法名 幂等性 安全性 补充
GET 幂等 安全 只读的, 但是设计不良的API可能造成假GET
PUT 幂等 不安全 更新/添加资源,添加资源只有当客户端创建连接请求的时候使用PUT
DELETE 幂等 不安全 删除资源,可以返回void
POST 不幂等 不安全

添加资源;RESTful中为POST(a),RPC中为POST(p),需要先解析信封才能获取真正方法

WebDAV 对HTTP1.1的扩展协议,增加了些协作方法,但是违背了REST统一接口受歧义。

Demo

REST方法测试Demo

REST资源设计

资源地址的设计是面向资源的,资源名称应是准确描述该资源的名词,资源地址应具有直观的描述性。一个URI资源地址唯一对应一个资源,但是一个资源可以拥有多个RUI资源地址。

资源地址的设计良否涉及系统的可用性、可维护性和可扩展性等诸多方面的表现。

资源地址

资源地址具体可以分为五个部分: scheme://host:port/path?queryString

资源地址路径分解
元素 描述
scheme 协议名称,通常是HTTP和HTTPS
host (DNS)主机名或IP地址
port 服务端口
path 资源地址,用“/“符号分隔逻辑上的层级结构
用来分隔资源地址和查询字符串的符号
queryString

查询字符串,方法作用域信息

使用”&“符号分隔查询条件

使用逗号分隔有次序的作用域信息

使用分号分隔五次序的作用域信息

资源地址设计
功能 资源地址 说明
添加/创建

POST /books

PUT /books/{id}

 
删除 DELETE /books/{id}  
修改/更新 PUT /books/{id}  
查询全部 GET /books HTTP1.1  
主键查询

GET /books/{id} HTTP1.1

GET /books?id=132456789

 
分页作用域查询

GET /books?start=0&size=10

GET /books/01,2002-12,2014

GET /books/restful;program=java;type=web

GET /books?limit=100&sort=bookname

起始页0,页条10;

逗号分隔次序:2002年1月到2014年12月

分号做并列查询,查询条件同级

每页100条,按书名排序

猜你喜欢

转载自blog.csdn.net/weixin_38930706/article/details/98845382