REST是它是一种架构风格 。REST就是通过使用HTTP协议和URI,利用client/server对资源进行CRUD操作。
REST优点:
1.客户端-服务端分离
优点:提高用户界面的便携性,通过简化服务器提高可伸缩性
2..无状态(Stateless):从客户端的每个请求要包含服务器所需要的所有信息
优点:提高可见性(可以单独考虑每个请求),提高了可靠性(更容易从局部故障中修复),提高可扩展性(降低了服务器资源使用)
3.缓存(Cachable):服务器返回信息必须被标记是否可以缓存,如果缓存,客户端可能会重用之前的信息发送请求
优点:减少交互次数,减少交互的平均延迟
4.统一接口
优点:提高交互的可见性,鼓励单独改善组件
5.支持按需代码(Code-On-Demand 可选)
优点:提高可扩展性
Django REST framework(以下简称 DRF)是一个开源的 Django 扩展,提供了便捷的 REST API 开发框架,拥有以下特性:
直观的 API web 界面。
多种身份认证和权限认证方式的支持。
内置了 OAuth1 和 OAuth2 的支持。
内置了限流系统。
根据 Django ORM 或者其它库自动序列化。
丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要。
可扩展性,插件丰富。
广泛使用,文档丰富。
简单的使用:
1,安装与配置
pip install djangorestframework
settings.py 安装子应用
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'mytest', 'mysite', 'myapp', 'supermarket', "rest_framework", ]
2,创建序列化 serializers.py
#导入序列化库 from rest_framework import serializers #导入数据库类 from supermarket.models import Product #定义序列化类 class ProductSerializers(serializers.ModelSerializer): #定义内置类 class Meta: #指定序列化的字段 model = Product # fields = ('id','name','price','count') #取所有的字段 fields = "__all__"
3,views.py 定义json接口
#导入视图类 from rest_framework import viewsets from .serializers import ProductSerializers #定义类,属于rest专用类,专门定义json接口 class ProductViewsets(viewsets.ModelViewSet): #输出序列化类 #定义sql queryset = Product.objects.all() serializer_class = ProductSerializers
4,配置路由
#导入路由库 from rest_framework.routers import DefaultRouter from .views import ProductViewsets #定义路由对象 router = DefaultRouter() #注册路由 router.register('/json',ProductViewsets) #将路由注入 urlpatterns += router.urls
**