当前位置: 首页 > news >正文

哪些网站需要icp备案怎样查后缀vc域名网站

哪些网站需要icp备案,怎样查后缀vc域名网站,网站外链购买平台,wordpress视频投稿插件API版本 在开发过程中可能会有多版本的API,因此需要对API进行管理。django drf中对于版本的管理也很方便。 http://www.example.com/api/v1/info http://www.example.com/api/v2/info 上面这种形式就是很常见的版本管理 在restful规范中,后端的API需…

API版本

在开发过程中可能会有多版本的API,因此需要对API进行管理。django drf中对于版本的管理也很方便。

http://www.example.com/api/v1/info

http://www.example.com/api/v2/info

上面这种形式就是很常见的版本管理

在restful规范中,后端的API需要体现出版本

在django drf中,共有三种形式的版本管理

  1. 通过GET参数传递
  2. 通过URL路由进行传递
  3. 通过请求头进行传递

下面将对这三种方法逐一介绍

通过get请求传递版本信息

视图函数代码

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.versioning import QueryParameterVersioningclass HomeView(APIView):versioning_class = QueryParameterVersioningdef get(self, request):print("api_version=", request.version)print(request.versioning_scheme)url = request.versioning_scheme.reverse("home", request=request)print("drf反向生成的URL为", url)self.dispatchreturn Response({"code": 123123, "Home": "Home"})

urls.py

from django.urls import path
from app01.views import HomeViewurlpatterns = [path("home/", HomeView.as_view(), name="home"),
]

在项目的settings.py文件中,我们还需要进行三个配置

REST_FRAMEWORK = {# get请求的默认参数名称"VERSION_PARAM": "version",# 默认的版本"DEFAULT_VERSION": "v1",# 允许的版本"ALLOWED_VERSIONS": ["v1", "v2", "v3", "v111"]
}

其中,VERSION_PARAM代表get请求的默认参数名,后面请求接口http://127.0.0.1:8000/home/?version=v1时,django会自动将参数中的version获取到,并赋值到request.version中。

具体的可以参考drf中通过get请求传递版本对应部分的源码

class QueryParameterVersioning(BaseVersioning):"""GET /something/?version=0.1 HTTP/1.1Host: example.comAccept: application/json"""invalid_version_message = _('Invalid version in query parameter.')# 用来提取版本def determine_version(self, request, *args, **kwargs):# 从请求的参数中先获取有没有版本,如果没有版本则赋值为默认的版本参数version = request.query_params.get(self.version_param, self.default_version)if not self.is_allowed_version(version):raise exceptions.NotFound(self.invalid_version_message)return version# 用来方向生成URLdef reverse(self, viewname, args=None, kwargs=None, request=None, format=None, **extra):url = super().reverse(viewname, args, kwargs, request, format, **extra)if request.version is not None:return replace_query_param(url, self.version_param, request.version)return url

QueryParameterVersioning类继承自BaseVersioing类。在BaseVersioing类中,有三个默认的定义:

class BaseVersioning:default_version = api_settings.DEFAULT_VERSIONallowed_versions = api_settings.ALLOWED_VERSIONSversion_param = api_settings.VERSION_PARAM

default_version 代表默认的版本,会自动去全局配置中寻找,如果全局中没有配置则去局部进行寻找

allowed_versions 代表允许的版本号,会自动取settings.py文件中去读取相应的配置

version_param 代表get请求参数中的关键字,例如http://127.0.0.1:8000/home/?version=v1 例如,若settings.py文件中配置了此url中的version_param值为version,那么version就是获取版本的关键字(本质上是字典的键)

接下来看效果演示,这里通过postman来模拟get和post请求。

  • 首先,这里我没有在URL中携带版本信息,由于我在全局配置中写了默认是v1,并且关键字是version,因此会帮我按照这个配置信息反向生成一个url链接。

  • 接下来的请求我会携带version参数,可以看到响应成功,输出api版本信息并反向生成了url

  • 接下来我换一个关键词使用?xx=v3,drf会按照之前的配置,默认使用v1参数

  • 接下来我会使用不在ALLOWED_VERSIONS中的版本信息,v1000,程序报错,不合格的版本信息

http://www.yayakq.cn/news/236060/

相关文章:

  • 石家庄房产网站官网基于h5的个人网站建设
  • 网站开发工程师前景怎么样网站开发项目书
  • 网站设计简单讲解北京网站制建设公司
  • 墨刀可以做网站原型图吗我想做服装网站怎么做
  • 五金制品东莞网站建设代做网站排名
  • 做南美生意做什么网站好网站页面架构
  • 做网站定金是多少a链接下载wordpress
  • 怎么自己设置网站模板互联网营销怎么做
  • 网站开发的框架协议南京建设网站多少钱
  • 中象做网站怎么样建筑网片有几种
  • 网站建设做网站好吗wordpress置顶代码
  • 烟台网络公司网站建设东莞住房与城乡建设官网
  • 江苏建新建设集团有限公司网站dw建设个人网站步骤
  • 快速做网站用什么软件wordpress 如何添加广告插件
  • 怎样在网站上做超链接网站建设注意点
  • 网站建设实训报告的内容怎么写沪尚茗居全包价格
  • 现在学网站开发联派网站建设
  • 有哪些做投行网站分销平台系统源码
  • 华为弹性云做网站鞍山58同城
  • 免费推广网站搭建还是正式公司好
  • 网站地图在线生成器惠州网站制作推广
  • 浅析我国门户网站建设不足app开发公司投入
  • 技术支持东莞网站建设ui设计技术培训学校
  • 哪些外贸网站比较好网络建设施工方案
  • vs2017 asp网站开发济南平台公司
  • 网站的网页建设知识ppt单机网页游戏网站
  • 有了域名建设网站网站开发毕业设计中期检查表
  • 网站备案背景布编辑网站在线注册系统
  • 建立自己的网站步骤网站流量指标有哪些
  • 从seo角度谈网站建设怎么做黑客攻击网站