RESTful

Api(接口)
postman 接口工具
模板引擎
后端人员 不喜欢玩前端
<%= %>
前后端:
后端提供接口(api)
前端写页面 ajax技术
40张表 增删改查 4接口

http://127.0.0.1:8888/user
http://127.0.0.1:8888/userAdd
http://127.0.0.1:8888/userUpdate

(1)分工明确,提高效率,兼容性问题
RESTful规范
一种软件的架构风格,设计风格,而不是标准,为客户端和服务器的交互提供一组设计原则和约束条件。
一、面向资源编程
每个URL代表一种资源,URL中尽量不要用动词,要用名词,往往名词跟数据库表格相对应。
一般来说,数据库中的表都是同种记录的集合,所有API中的名词也应该使用复数。
举例来说,有一个API提供动物园(zoo)的信息。还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。

https://api.example.com/v1/zoos
https://api.example.com/v1/animals
https://api.example.com/v1/employees

二、HTTP动词
对于资源的具体操作类型,由HTTP动词表示
常用的HTTP的动词下面五个(括号里对应的sql命令)

GET(SELECT):从服务器取出资源(一项或多项)
POST(CREATE):在服务器新建一个资源
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)
DELETE(DELETE):从服务器删除资源

三、在URL中体现版本

https://www.bootcss.com/v1/
https://v1.bootcss.com

四、在URL中体现是否是API

https://www.bootcss.com/api/mycss
https://api.bootcss.com/mycss

五、在URL中的过滤条件

?limit=10 指定返回记录的数量(条数)
?offset=10 指定返回记录的开始位置
?page=8&perPage=20 指定第几页、以及每页的条数
?sortby=name&order=asc 指定返回结果按照哪个属性排序,以及排序顺序
?animal_type_id=1 指定筛选条件

select post,count(1) from user where id > 20 group by post having ave(age) > 25 order by age desc limit 0,3
六、尽量使用HTTPS(加密协议)

https://www.bootcss.com/v1/mycss

七、响应时设置状态码

1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误

八、返回值

GET请求 返回查到所有或单条数据
POST请求 返回新增的数据
PUT请求 返回更新数据
PATCH请求 局部更新 返回更新整条数据
DELETE请求 返回值为空

九、返回错误信息
如果状态码是4**,就应该向用户返回出错信息,一般来说,返回的信息中error作为键名,出错信息作为键值即可。

{
    error:'Invalid API key';
}

十、Hypermedia API
如果遇到需要跳转的情况,携带调转接口的URL
Hypermedia API的设计,比如GitHub的API就是这种设计,房屋api.github.com就会得到一个所有可用的API的网址列表

{
    "current_user_url":"https://api.github.com/user",
    "authorizations_url":"https://api.github.com/authorizations",
    //...
}

从上面可以看到,如果想获取当前用户的信息,应该去访问https://api.github.com/user,就会得到如下记录

{
    message:"Requires_authorizations",
    documentation_url:"https://developer.github.com/v3/users/#get=the-authenticated-user"
}

十一、其他
(1)API的身份认证应该使用OAuth 2.0框架
(2)服务器返回的数据格式,应该尽量使用JSON,避免使用XML

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容