建筑业招聘网站,企业做产品网站费用大概是多少,刚建的网站百度搜不到,做外贸的几个网站web 开发模式 RESTful规范
1 数据的安全保障 url链接一般都采用https协议进行传输 注#xff1a;采用https协议#xff0c;可以提高数据交互过程中的安全性
2 接口特征表现 用api关键字标识接口url#xff1a; https://api.baidu.comhttps://www.baidu.com/api注#xff… web 开发模式 RESTful规范
1 数据的安全保障 url链接一般都采用https协议进行传输 注采用https协议可以提高数据交互过程中的安全性
2 接口特征表现 用api关键字标识接口url https://api.baidu.comhttps://www.baidu.com/api注看到api字眼就代表该请求url链接是完成前后台数据交互的
3 多数据版本共存 在url链接中标识数据版本 https://api.baidu.com/v1https://api.baidu.com/v2注url链接中的v1、v2就是不同数据版本的体现只有在一种数据资源有多版本情况下
4 数据即是资源均使用名词可复数 接口一般都是完成前后台数据的交互交互的数据我们称之为资源 https://api.baidu.com/usershttps://api.baidu.com/bookshttps://api.baidu.com/book注一般提倡用资源的复数形式在url链接中奖励不要出现操作资源的动词错误示范https://api.baidu.com/delete-user 特殊的接口可以出现动词因为这些接口一般没有一个明确的资源或是动词就是接口的核心含义 https://api.baidu.com/place/searchhttps://api.baidu.com/login
5 资源操作由请求方式决定method
操作资源一般都会涉及到增删改查我们提供请求方式来标识增删改查动作 https://api.baidu.com/books - get请求获取所有书https://api.baidu.com/books/1 - get请求获取主键为1的书https://api.baidu.com/books - post请求新增一本书书https://api.baidu.com/books/1 - put请求整体修改主键为1的书https://api.baidu.com/books/1 - patch请求局部修改主键为1的书https://api.baidu.com/books/1 - delete请求删除主键为1的书
6 过滤通过在url上传参的形式传递搜索条件
https://api.example.com/v1/zoos?limit10指定返回记录的数量https://api.example.com/v1/zoos?offset10指定返回记录的开始位置https://api.example.com/v1/zoos?page2per_page100指定第几页以及每页的记录数https://api.example.com/v1/zoos?sortbynameorderasc指定返回结果按照哪个属性排序以及排序顺序https://api.example.com/v1/zoos?animal_type_id1指定筛选条件
7 响应状态码
7.1 正常响应
响应状态码2xx 200常规请求201创建成功
7.2 重定向响应
响应状态码3xx 301永久重定向302暂时重定向
7.3 客户端异常
响应状态码4xx 403请求无权限404请求路径不存在405请求方法不存在
7.4 服务器异常
响应状态码5xx 500服务器异常
8 错误处理应返回错误信息error当做key
{error: 无权限操作
}
9 返回结果针对不同操作服务器向用户返回的结果应该符合以下规范
GET /collection返回资源对象的列表数组
GET /collection/resource返回单个资源对象
POST /collection返回新生成的资源对象
PUT /collection/resource返回完整的资源对象
PATCH /collection/resource返回完整的资源对象
DELETE /collection/resource返回一个空文档
10 需要url请求的资源需要访问资源的请求链接
# Hypermedia APIRESTful API最好做到Hypermedia即返回结果中提供链接连向其他API方法使得用户不查文档也知道下一步应该做什么
{status: 0,msg: ok,results:[{name:肯德基(罗餐厅),img: https://image.baidu.com/kfc/001.png}...]
}
# 响应数据要有状态码、状态信息以及数据本身
{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}...]
} Django REST framework
1.DRF需要以下依赖
Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)Django (1.10, 1.11, 2.0)
DRF是以Django扩展应用的方式提供的所以我们可以直接利用已有的Django环境而无需从新创建。若没有Django环境需要先创建环境安装Django 2.安装 pip install djangorestframework
pip install pymysql 或在pycharm里安装django-rest-framework 在settings.py的INSTALLED_APPS中添加’rest_framework’。
INSTALLED_APPS [...rest_framework,
]
3.连接数据库建立ORM模型
ps简单实用数据库可以使用django自带不需要配置过参数。
4.写序列化类
想序列化那个字段就写那个字段
from rest_framework import serializersclass BookSerializer(serializers.Serializer):idserializers.CharField()nameserializers.CharField()priceserializers.CharField()authorserializers.CharField()publishserializers.CharField()
5. 在视图类中实例化的到序列化的对象
a.使用rest_framework的Response
b.book_ser.data是字典
from rest_framework.views import APIView
from app01.models import Book
from app01.ser import BookSerializer
from rest_framework.response import Responseclass BookView(APIView):def get(self,request,pk):bookBook.objects.filter(idpk).first()book_serBookSerializer(book) #调用类的__init__# book_ser.data 序列化对象.data 就是序列化后的字典return Response(book_ser.data)