我正在使用DRF构建RPC样式的API,其中每个端点都可以使用GET或POST方法调用。到目前为止,我很好地结合了这些方法:
class UpdateUser(APIView):
permission_classes = (permissions.IsAuthenticated,)
def post(self, request, *args, **kwargs):
return self.get(request, *args, **kwargs)
def get(self, request, format=None):
# Do stuff here with request.data
不幸的是,POST在request.data
中提供数据,在request.query_params
中提供GET。有没有办法将它们合并到request.data
或像request.params
这样的自定义内容?解析器似乎不起作用,因为它们没有被GET请求调用。
答案 0 :(得分:4)
我同意@jorilallo关于在request.data
函数中使用get
的评论。
或者,你可以做的是在视图中创建另一个函数,该函数可以有request.data
或request.query_params
作为参数:
class UpdateUser(APIView):
permission_classes = (permissions.IsAuthenticated,)
def post(self, request, *args, **kwargs):
# POST have request.data
return self.process_request(request, request.data)
def get(self, request, format=None):
# GET have request.query_params
return self.process_request(request, request.query_params)
def process_request(self, request, data):
# Do stuff here with data
# return a response
此处,从process_request
和post
方法调用get
函数,并将相关data
作为参数传递。