
API分类A程序需要B程序的部分功能只需要将B程序部分功能打包交给A程序直接使用比如Java jar这种API一般称为SDK。A程序/项目需要B程序/项目的部分功能只需要B对外提供访问路径/入口A按照约定好的访问方式进行访问即可实现对象的功能这种API称为应用接口Restful规范产生原因客户端不仅限于PC端浏览器、移动APP、小程序等等这就要求服务端能提供统一的API接口不同类型的客户端基于相同的协议或规则就能来调用该API接口并获取预期的数据。Restful约定请求路径针对接口要操作资源统一使用复数路径一般就是操作实体对象复数如/employees请求方法GET (select)从服务器获取出资源一项/多项POST (create) 在服务器新建添加资源。PUT (update) 在服务器更新修改资源。客户端提供改变后的完整资源PUT 更新整个对象。Patch (update) 在服务器更新资源客户端提供改变的属性PATCH更新个别属性DELETE (delete)从服务器删除资源请求参数由需求决定请求响应GET 单个资源→→单个资源对象多个资源→→数组POST→→新生成的资源对象PUT→→完整的资源对象PATCH→→完整的资源对象DELETE→→空文档真实开发具体响应什么以公司规定/操作需求为主一般建议响应格式为JSON格式HTTP响应状态码1xx信息请求已接收请继续处理2xx成功请求正常处理完毕200 OK [GET] 请求成功服务器成功返回用户请求的数据。201 CREATED [put/post/patch]数据创建或修改成功。202 Accepted 表示一个请求已经进入后台排队异步任务204 No Content [delete ]删除成功。请求成功不返回数据206 partition content部分内容返回常用于断点续传3xx重定向301 Moved Permanently 永久重定向。如某网站域名永久迁移到新地址302 Found 临时重定向304 Not Modified 资源未更新缓存命中使用本地缓存。节省带宽4xx客户端错误400 Bad Request 请求参数有问题如参数格式错误或缺少必要字段。401 Unauthorized 未认证未登录/登录信息失效。没身份403 forbidden 已认证但没有权限有身份但没资格如普通用户想访问管理员接口404 Not found 资源不存在访问了一个不存在的接口或页面405 Method Not Allowed 请求方式错误。比如接口需要post请求但你发送了get请求406 Not Acceptable [GET]用户请求的格式不可得。如请求JSON格式但只有X mail格式410 Gone [GET] 用户请求的资源被永久删除且不会再得到了422 Unprocessableentity [post/put/patch] 当创建一个对象时发生验证错误429 Too many requests 请求过于频繁通常出现在限流场景5xx服务端错误500 Internal Server Error 服务器内部异常。代码报错/空指针/数据库异常501 Not Implemented 服务端不支持当前请求功能。502 Bad Gateway 网关错误。常见于Nginx转发请求时后端服务挂了或返回异常。503 Service, unavailable 服务不可用。系统维护/服务过载/熔断降级。504 Gateway Timeout 网关超时请求已发送给后端但长时间未响应资源表现形式比如文本可以用txt格式表现也可以用HTML格式、XML格式、JSON格式表现甚至可以采用二进制格式;图片可以用IPG格式表现也可以用PNG格式表现。它的具体表现形式应该在HTTP请求的头信息中用Accept和Content-Type字段指定这两个字段才是对表现的描述。accept:application/jsoncontent-type:application/isonAccept与content-Type的区别Accept属于请求头 content-Type属于实体头。Http报头分为通用报头请求报头响应报头和实体报头。请求方的http报头结构:通用报头|请求报头|实体报头响应方的http报头结构:通用报头|响应报头|实体报头.Accept代表发送端(客户端)希望接受的数据类型。比如:Accept :application/ison;代表客户端希望接受的数据类型是ison类型,后台返回ison数据。Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型。比如:content-Type :application/json;代表发送端发送的数据格式是ison,后台就要以这种格式来接收前端发过来的数据。