将我现有的一个项目升级到Django REST Framework 3.4后,我试图使用coreapi
CLI客户端与我的API进行交互。但是,我在获取,创建或更新资源时遇到问题,因为所有模式生成的API URL都映射到我的应用程序/
的基本URL,而不是我的应用程序API的基本URL,即{{1} }。
要使用/api/v2/
前缀输出生成的模式中的URL,我应该使用我的URL配置和/或路由器更改某些内容,还是应该使用自定义模式生成器,如{ {3}}?
以下是架构输出的示例(从请求/api/v2/
开头,标题为/api/v2/
):
Accept:application/vnd.coreapi+json
以下是{
"_type": "document",
"_meta": {
"title": "My API v2"
},
"categories": {
"create": {
"_type": "link",
"url": "/categories/",
"action": "post",
"encoding": "application/json",
"fields": [
{
"name": "title",
"required": true,
"location": "form"
}
]
},
"destroy": {
"_type": "link",
"url": "/categories/{pk}/",
"action": "delete",
"fields": [
{
"name": "pk",
"required": true,
"location": "path"
}
]
}
},
...
}
中设置路由器的方法:
app/api_v2/api.py
我的from rest_framework.routers import DefaultRouter
from app.api_v2 import viewsets
api_v2 = DefaultRouter(schema_title='My API v2')
api_v2.register(r'categories', viewsets.CategoryViewSet)
...
个设置配置为ROOT_URLCONF
,ROOT_URLCONF = 'myproject.urls'
的定义如下:
myproject/urls.py
最后,from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
import app.views
admin.autodiscover()
urlpatterns = [
...
url(r'^', include('app.urls')),
...
]
:
app/urls.py
答案 0 :(得分:1)
我认为这是版本< = 3.4。
的问题在当前的主人中解决了。
另见https://github.com/tomchristie/django-rest-framework/issues/4401