我正在为不受我控制的旧版客户端实施API。
请求是POST,其中body是JSON字符串。
根据具体情况,没有内容类型标题,或内容类型标题错误。
我实现了API。它与添加application/json
内容类型的CURL客户端一起正常工作。但是,如果未提供内容类型,则会引发415错误。问题是我无法让客户端添加正确的内容类型。
如果强制@api_view(['POST'])
包裹的视图使用JSONParser
,无论请求的标头是什么?
答案 0 :(得分:1)
如果您想放弃标准内容协商并使用更简单的内容,则可以使用自定义内容协商类。示例given in the docs符合您的需求。
class IgnoreClientContentNegotiation(BaseContentNegotiation):
def select_parser(self, request, parsers):
"""
Select the first parser in the `.parser_classes` list.
"""
return parsers[0]
您还需要调整设置,以使用自定义类...
REST_FRAMEWORK = {
'DEFAULT_CONTENT_NEGOTIATION_CLASS':
'myapp.negotiation.IgnoreClientContentNegotiation',
}