目录django
与django相比的话,不会出现csrf问题api
接口规范:安全
https/api/v1/books/get、post/?limit=3/http_status/{status,msg,results}/data:https://delete 成功不作数据返回
2000年Roy Fielding博士在其博士论文中提出REST(Representational State Transfer)风格的软件架构模式后,REST就基本上迅速取代了复杂而笨重的SOAP,成为Web API的标准了。服务器
RESTful做为目前最流行的 API 设计规范,必定有着它独有的魅力:强大、简易、易上手。restful
views.py架构
from . import models class Book(View): def get(self, request, *args, **kwargs): pk = kwargs.get('pk', None) if pk: # 单查 book_dic = models.Book.objects.filter(pk=pk).values('name', 'price').first() results = book_dic else: # 群查 book_query = models.Book.objects.values('name', 'price') results = list(book_query) if not results: return JsonResponse({ 'status': 1, 'msg': 'data error', }) return JsonResponse({ 'status': 0, 'msg': 'ok', 'results': results }) # 单增:{} # 群增:[{},{},{}] def post(self, request, *args, **kwargs): return JsonResponse({'res': 'post ok'}) # 单改:pk,{} # 群改:[{pk:1,...},{},{}] def put(self, request, *args, **kwargs): return JsonResponse({'res': 'put ok'}) # 单改:pk,{} # 群改:[{pk:1,...},{},{}] def patch(self, request, *args, **kwargs): return JsonResponse({'res': 'patch ok'}) # 单删:pk # 群删:pks def delete(self, request, *args, **kwargs): return JsonResponse({'res': 'delete ok'})
urls.pyapp
from django.conf.urls import url, include from django.contrib import admin from api import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^test/', views.Test.as_view()), # 路由分发 url(r'^api/', include('api.urls')), ]
app内的urls.pypost
from django.conf.urls import url from . import views urlpatterns = [ url(r'^books/$', views.Book.as_view()), url(r'^books/(?P<pk>\d+)/$', views.Book.as_view()), ]
url连接通常都采用https协议进行传输ui
注:采用https协议,能够提升数据交互过程当中的安全性url
用api关键字标识接口url:
注:看到api字眼,就表明该请求url连接是完成先后台数据交互的
在url连接中标识数据版本
注:url连接中的v一、v2就是不一样数据版本的体现(只有在一种数据资源有多版本状况下)
接口通常都是完成先后台数据的交互,交互的数据咱们称之为资源
注:通常提倡用资源的复数形式,在url连接中奖励不要出现操做资源的动词,错误示范:https://api.baidu.com/delete-user
特殊的接口能够出现动词,由于这些接口通常没有一个明确的资源,或是动词就是接口的核心含义
{ "status": 0, "msg": "ok", "results":[ { "name":"肯德基(罗餐厅)", "location":{ "lat":31.415354, "lng":121.357339 }, "address":"月罗路2380号", "province":"上海市", "city":"上海市", "area":"宝山区", "street_id":"339ed41ae1d6dc320a5cb37c", "telephone":"(021)56761006", "detail":1, "uid":"339ed41ae1d6dc320a5cb37c" } ... ] }
{ "status": 0, "msg": "ok", "results":[ { "name":"肯德基(罗餐厅)", "img": "https://image.baidu.com/kfc/001.png" } ... ] }