RESTFul是一个API设计的规范,是在前后端分离的web开发中规范数据传输的接口,使前后端交互统一高效。
RESTful 的核心思想就是,客户端发出的数据操作指令都是"动词 + 宾语"的结构。比如,GET /articles
这个命令,GET
是动词,/articles
是宾语(是复数形式)。如果是单数操作一般指明操作数据的id(pk)。GET /articles/?pk=1
动词通常就是五种 HTTP 方法,对应 CRUD 操作(可以直接应用相应的请求方式)
- GET:读取(Read)
- POST:新建(Create)
- PUT:更新(Update)
- PATCH:更新(Update),通常是部分更新
- DELETE:删除(Delete)
对于只能发GET和POST的客户端可以用X-HTTP-Method-Override:PUT,指定请求方式
Django中使用RESTFul
安装模块:pip install djangorestframework
配置和使用:
settings中:INSTALL_APPS = [… , ’rest_framework’,]
djangorestframework的核心是序列化:
在app中创建serializers.py文件,里面编写需要序列化的模型和模式。
1 2 from rest_framework import serializers 3 from app01.models import * 4 5 # 定义序列化程序 6 class UserInfoSerializer(serializers.ModelSerializer): 7 '''指定需要序列化的模型和字段''' 8 class Meta: 9 model = Book # 数据库表名 10 fields = '__all__' # 所有的字段都要
views.py中应用类视图并继承rest_framework中的包
1 from rest_framework.viewsets import ModelViewSet 2 from app01.serializers import * 3 4 class UserInfoView(ModelViewSet): 5 queryset = Book.objects.all() # 获取查询结果集 6 serializer_class = UserInfoSerializer # 指定序列化器 7
urls.py中的路由可以用rest_framework中的DefaultRouter来指定路由集
1 from rest_framework.routers import DefaultRouter 2 # 定义视图处理的路由器 3 router = DefaultRouter() 4 router.register('users',views.UserInfoView,base_name='') # 在路由器中注册视图集 5 6 urlpatterns = [ 7 8 ] 9 10 urlpatterns += router.urls 11 12 ----------------------------------------------------------------- 13 # 主路由中 14 path('api/', include((router.urls, 'app_name'), namespace='instance_name')),
将server以0.0.0.0:8000,的形式启动,重点是0.0.0.0意思是可以所有ip访问
这样就可以在主机上访问虚拟机中的项目,方便调试。