【发布时间】:2019-02-03 17:59:22
【问题描述】:
我有一个 django rest api,它实现了如下突出显示的视图集。
class SubjectViewSet(viewsets.ModelViewSet):
pagination_class = ContentRangeHeaderPagination
queryset = Subject.objects.all()
serializer_class = SubjectSerializer
同样,我的前端是基于 react-admin here
import React from 'react';
import { Admin, Resource } from 'react-admin';
import simpleRestProvider from 'ra-data-simple-rest';
import { NonIndividualList, NonIndividualCreate, NonIndividualEdit} from './subjects';
const App = () => (<Admin dataProvider=simpleRestProvider('http://localhost:8000/api/v1/coreapp')}>
<Resource name="subject" title="Non-Individuals" list={NonIndividualList}
create={NonIndividualCreate} edit={NonIndividualEdit}/>
</Admin>);
export default App;
在我的休息服务器中,在 settings.py 下我有以下设置
APPEND_SLASH = 假
最后,我的 app/urls.py 看起来像这样
router = DefaultRouter()
router.register(r'api/v1/coreapp/subject', views.SubjectViewSet)
urlpatterns = [(r'^', include(router.urls)),]
问题:
从邮递员那里,我可以轻松地完成端点
- 获取:http://localhost:8000/api/v1/coreapp/subject/,
- POST:http://localhost:8000/api/v1/coreapp/subject/,
- 输入:http://localhost:8000/api/v1/coreapp/subject/2/,
- 删除:http://localhost:8000/api/v1/coreapp/subject/1/,
但是,我的 react-admin 客户端没有附加斜杠
相反,Http-actions Create/Put 将请求发送到 url。 注意到缺少的尾部反斜杠了吗?
我试过了,
1- 设置 Append_Slash = True 2- 在资源名称中添加 /,它只是附加两个反斜杠
<Resource name="subject/"/>
对于 PUT,请注意额外的反斜杠。
底线是,我的服务器只要有尾部反斜杠就接受请求。
我的 react-admin 应用程序不会在请求上附加反斜杠。 请SO,建议兄弟:-)
【问题讨论】:
-
请同时包含您的 react-admin 代码
-
你会如何解决这个问题?通过使用 DRF 处理不带斜杠的 URL 或借助 React Admin 添加斜杠?
-
@Harikrishnan 我已经添加了代码。请随时索取任何有助于您帮助我的其他信息。
标签: django-rest-framework react-admin