本文共 3445 字,大约阅读时间需要 11 分钟。
接口是前后台之间的桥梁,负责数据的交互。在Web程序中,接口通常连接前台页面与后台数据库,起到数据传输的作用。
api.baidu.map/search,返回JSON数据。key传递数据给后台,确保后台能正确提取并查询数据。URL唯一标识。api作为接口的标识,例如api.baidu.com或www.baudu.com/api。URL中体现,例如api.baidu.com/v1/...和api.baidu.com/v2/...。api.baidu.com/books/123。api.baidu.com/books/?search=宝马&ordering=-price&limit=3。status字段表示操作结果,0表示成功,1表示失败,2表示无匹配结果。results字段展示资源数据,特殊情况下返回数据URL。urls.py中包含应用路由,例如url(r'^api/', include('api.urls'))。urls.py中定义细粒度路由,例如url(r'^books/', views.Book.as_view())。views.py中继承View类,并实现不同HTTP方法的处理逻辑。from django.http import JsonResponsefrom django.views import Viewclass Book(View): def get(self, request, *args, **kwargs): return JsonResponse({'status': 0, 'msg': 'ok', 'results': [...]}, safe=False) def post(self, request, *args, **kwargs): # 处理POST请求逻辑 return JsonResponse({'status': 0, 'msg': 'ok', 'results': [...]}, safe=False) models.py中定义数据结构,例如:from django.db import modelsclass Book(models.Model): title = models.CharField(max_length=64) price = models.DecimalField(max_digits=5, decimal_places=2) class Meta: db_table = 'book' verbose_name = '书籍'
makemigrations创建迁移文件,migrate应用到数据库。admin.py注册模型,并创建管理员账户。as_view函数分发至应用路由。dispatch方法判断请求方式,执行相应的业务逻辑。JsonResponse。from django.conf.urls import urlfrom . import viewsurlpatterns = [ url(r'^books/$', views.Book.as_view()), url(r'^books/(?P\d+)$', views.Book.as_view()),]
class Book(View): def get(self, request, *args, **kwargs): if not kwargs.get('pk'): # 群查接口 books = Book.objects.all() return JsonResponse({'status': 0, 'msg': 'ok', 'results': [...]}, ensure_ascii=False) else: # 单查接口 book = Book.objects.filter(pk=kwargs['pk']).values('title', 'price').first() if book: return JsonResponse({'status': 0, 'msg': 'ok', 'results': book}, ensure_ascii=False) else: return JsonResponse({'status': 2, 'msg': 'no results'}, ensure_ascii=False) def post(self, request, *args, **kwargs): try: book = Book.objects.create(**request.POST.dict()) if book: return JsonResponse({'status': 0, 'msg': 'ok', 'results': {'title': book.title, 'price': book.price}}, ensure_ascii=False) except Exception as e: return JsonResponse({'status': 1, 'msg': 'wrong params'}, ensure_ascii=False) return JsonResponse({'status': 2, 'msg': 'created failed'}, ensure_ascii=False) ensure_ascii属性,避免中文乱码。Django REST Framework通过标准化接口规范,简化了前后台数据交互流程。通过合理设计URL、请求参数和响应数据,可以构建高效、可扩展的API系统。CBV视图类的请求生命周期清晰地展示了数据处理流程,而序列化组件则确保了数据在不同系统间的互通。
转载地址:http://nimbz.baihongyu.com/