一、RESTFUL API设计规范 (10条):
-
API与用户的通信协议,总是使用HTTPS协议
-
域名:
-
http://api.example.com 尽量将API部署在专用域名(会存在跨域问题)
-
http://example.org/api API很简单
-
-
版本:
-
-
可以放在请求头中
-
-
路径:视网络上任何东西都是资源,均使用名词表示
-
通过method区分是什么操作
-
get表示获取
-
post 表示新增
-
delete表示删除
-
patch/put 表示修改
-
-
过滤,通过在url上传参的形式传递搜索条件
-
状态:状态码{"status_code":100}
-
错误处理,返回错误信息
{"status_code":100,'msg':'登录成功'} {"status_code":101,'msg':'用户名错误'}
-
返回结果,针对不同的操作服务器向用户返回的结果
-
返回结果提供链接
二 、基于Django的实现
# 路由函数
url(r'^books/', views.Books.as_view()),
# 视图函数
def books(request):
# 获取所有图书
if request.method=='GET':
books=models.Book.objects.all()
#把queryset对象转成json格式字符串
# ll=[]
# for book in books:
# bo={'name':book.name,'publish':book.publish}
# ll.append(bo)
#列表推导式
ll=[{'name':book.name,'publish':book.publish} for book in books]
response={'code':100,'msg':'查询成功','data':ll}
#safe=False 如果序列化的对象中有列表,需要设置
return JsonResponse(response,safe=False,json_dumps_params={'ensure_ascii':False})