1.与后台做交互,通常采用https协议,这样安全.
2.域名 有两种格式
https://www.baidu.com.
https://api.baidu.com
这就说明这是百度提供的这个接口,这种存在跨域问题(域名或者端口号不同)浏览器有同源策略,就会把这个请求回来的时候浏览器就给阻止了,需要自己解决跨域问题。
https://www.baidu.com.
https://www.baidu.com/api/
3.版本 ,接口不能保证不改动
https://www.baidu.com/api/v1 第一版
https://www.baidu.com/api/v2 第二版
面向资源编程:本质就是把网络上的任何东西都当做是一个资源,对这个资源可以进行增删改查。一个资源应该是个名词,所以一个URL后面跟一个名词,这个名词就代表这个东西,我要对这个东西进行增删改查(get,delete,put,post…都是动作)对这个资源进行不同的动作进行不同的操作。
4.路径上所有的东西都是资源,均使用名词来表示。不用动词get,delet。
https://www.library.com.api/v1/books
https://www.library.com.api/v1/book
5.method(请求的方式)来表示增删查改,链接上看不出来只有在请求方式上能看出来增删查改。
6.在URL上传参的形式传递搜索条件过滤条件
https://www.library.com.api/v1/books?limit=10 只拿前十本书
https://www.library.com.api/v1/books?price=20 只拿价格为20元的书
7.状态码 ----->给客户做提示 状态码跟code结合一起用
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - []:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - []:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - []:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
等价于:{‘status’:100,}
class OrderView(View):
def get(self,request,*args,**kwargs):
response = {
'code':100,
'msg':'successful'
}
return HttpResponse(json.dumps(response),status=201) #状态码也可以写其他的 用code还是状态码 对状态码有要求的可以写
8.错误处理,,返回错误信息给客户,error当做key
{‘status’:101,‘error’:“不可以这样”}
9.返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范。
GET / order 获取所有订单 collection:返回资源对象的列表(数组)
GET / order /1 获取一个订单的详细 collection/resource:返回单个资源对象
POST /order 返回新生成的的订单 collection:返回新生成的资源对象
PUT / order 修改全部部订单 collection/resource:返回完整的资源对象
PATCH /order 修改局部订单 collection/resource:返回完整的资源对象
DELETE /order collection/resource:返回一个空文档
10.返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
返回结果中提供链接(获取一本书)
{
id:1
name:xxx
price:12
publish:www.xxx.com.api/v1/publish/1
}