首页 > 编程知识 正文

前后端分离 api安全,前后端分离怎么调用后端接口

时间:2023-05-05 00:16:25 阅读:151223 作者:2124

3358 www.Sina.com/http://www.Sina.com /后端只负责开发接口、处理业务逻辑、提供数据前端关注交互,调用接口来进行交互前端呈现逻辑禁止在多个接口之间调用。 前后各有自己的开发流程、构建工具、测试集合,前后端关注点分离、相对独立松散耦合。前后端分离规范原则后端创建维护界面文档,包括界面角色、界面路径、请求类型、条目、参与、示例等,位于文档顶部或底部后端如有变更,及时更新接口文档; 后端基于接口文档进行接口开发,开发完成后可以利用postman、eolinker等接口规范工具进行自检; 前端可以基于接口文档进行前端开发,利用Mock平台构建虚拟数据进行接口渲染; 开发完成后,前后进行接口调整,调整完成后向测试仪提交测试。 http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /任何事务只要需要被引用就是一个资源,并且对于每一个资源都是唯一的urre

规范原则

例如,/stops/clothess/jackets表示商店/衣服/上衣,但不在/末尾。

开发流程

例如,/clothes-shops/jackets/short-sleeves表示服装店/上衣/短袖。

Restful接口规范

/clothes-shops/jackets/short-sleeves? color=红色page=1pageSize=10。

使用/查看资源级别时,级别不能太深。 3-5水平就可以了。 可以使用吗?/streets/3/clothes-shops/2/jackets/short-sleeves/1 (id为3的街道下id为2的服装店上衣中id为1的短袖)等查询参数代理的实体导航

可以使用Get /jackets/short-sleeves吗? 代替streetId=3shopId=2sleeveId=1。

URI命

URI应该用名词而不是动词来表示,因为它只用于表示资源的名称,不应该包含资源的操作。 此外,使用的名词经常与数据库中的表名相对应。 一般来说,数据库中的表是同类记录的“集合”,因此API中的名词也应该使用多个。

例如,获取衣服的信息。 用/clothes-shops/jackets/short-sleeves/id表示。 不是/clothes-shops/jackets/getshortsleeveinfo吗? 用id=xxx这样来表达。

名规范

使用“/”表示资源的层级关系

Get /street/clothes-shops? 检测streetId=1大街1的所有服装店

Get /street/clothes-shops/Id? streetId=1检测街1指定id的服装店

使用“-”增强URI的可读性

POST /street/clothes-shops? streetId=1大街1新建服装店

y;">    PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

PUT  /street/clothes-shops/Id?streetId=1 更新街道1指定id的服装店信息(客户端提供服装店所有信息)

    PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

PATCH  /street/clothes-shops/Id?streetId=1 更新街道1指定id的服装店信息(客户端提供服装店部分信息)

    DELETE(DELETE):从服务器删除资源。

DELETE  /street/clothes-shops/Id?streetId=1 删除街道1指定id的服装店信息

​​​​​​​接口返回规范

接口返回使用自定义的Response类;如

​​​​​​​返回码status规范

接口成功返回200时或者302跳转时status返回success,否则返回faild,用于前端判断提示信息的显示

返回code、message规范

接口调用正常code返回200,message返回成功;接口需要重定向code返回302,message返回重定向;接口异常时code和message的返回:

API 可能抛出两类异常:业务异常和非业务异常。业务异常由自己的业务代码抛出,表示一个用例的前置条件不满足、业务规则冲突等,比如参数校验不通过、权限校验失败。非业务类异常表示不在预期内的问题,通常由类库、框架抛出,或由于自己的代码逻辑错误导致,比如数据库连接失败、空指针异常、除0错误等等。

业务类异常通常自定义code和message,code尽量使用http规范里的错误码表示,message返回的信息尽量表明业务类异常的原因,http常用异常请点击:http规范常用异常表示;

常用的http状态码及使用场景:

状态码

使用场景

400 bad request

常用在参数校验

401 unauthorized

未经验证的用户,常见于未登录。如果经过验证后依然没权限,应该 403(即 authentication 和 authorization 的区别)

403 forbidden

无权限

404 not found

资源不存在

500 internal server error

非业务类异常

503 service unavaliable

由容器抛出,自己的代码不要抛这个异常

code返回500表示非业务类异常,mesage统一返回“服务器端错误,请稍后再试”。

​​​​​​​返回result规范

针对不同的http method请求操作的result的返回:

http method请求类型

result返回

GET

单个对象、集合

POST

新增成功的对象

PUT/PATCH

更新成功的对象

DELETE

单个对象使用json格式,集合使用json数组格式;

Json格式的规范:

时间用时间戳或是“yyyy-MM-dd HH:mm:ss”这种格式;Boolean类型,JSON数据传输中一律使用1/0来标示,1为是/True,0为否/False;返回的对象里面如果某个字段没有值的话也要用null来表示,而不能对象里没有该字段;返回的集合如果没有值用空数组表示;Json数据尽量简单轻量,尽量避免多级json;分页的情况

    返回的result需要分页的表示如下:

result:{

    "paging":{"limit":10,"page":0,"total":729},

    "data":[{},{},{}...]

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。