Django Rest Framework - 如何在 urls.py 中获取 Http header 信息
Django Rest Framework - how to get Http header information in urls.py
我正在制作 Django-based API,这是我的 urls.py。
from django.conf.urls import include, url
api_version = "v1"
urlpatterns = [
url(r'^v1/', include( "api."+ api_version +".urls", namespace=api_version )),
]
我想做的是从 http accept header 中检索 API 版本。我尝试使用 django.http.HttpRequest 模块,但没有成功。
有什么办法可以实现吗?
您无法访问 urls.py
上的请求,请参阅:How Django processes a request
您可以在 django-rest-framework 上配置 versioning 并在请求对象上获取 version
,例如:
class SampleView(APIView):
def post(self, request, format=None):
if request.version == '1':
return Response(status=status.HTTP_410_GONE)
或使用URLPathVersioning
方法。
您无法访问 url.py 中的请求,对于您的特定场景,即版本,
您可以为不同版本的 api 使用不同的 url。
喜欢
url(r'^v1/', include("api.v1.urls")),
url(r'^v2/', include("api.v2.urls")),
url(r'^v3/', include("api.v3.urls")),
我正在制作 Django-based API,这是我的 urls.py。
from django.conf.urls import include, url
api_version = "v1"
urlpatterns = [
url(r'^v1/', include( "api."+ api_version +".urls", namespace=api_version )),
]
我想做的是从 http accept header 中检索 API 版本。我尝试使用 django.http.HttpRequest 模块,但没有成功。
有什么办法可以实现吗?
您无法访问 urls.py
上的请求,请参阅:How Django processes a request
您可以在 django-rest-framework 上配置 versioning 并在请求对象上获取 version
,例如:
class SampleView(APIView):
def post(self, request, format=None):
if request.version == '1':
return Response(status=status.HTTP_410_GONE)
或使用URLPathVersioning
方法。
您无法访问 url.py 中的请求,对于您的特定场景,即版本, 您可以为不同版本的 api 使用不同的 url。
喜欢
url(r'^v1/', include("api.v1.urls")),
url(r'^v2/', include("api.v2.urls")),
url(r'^v3/', include("api.v3.urls")),