현재 Django REST 프레임 워크로 실행중인 multipart/form-data를 사용하여 POST 요청을 받고자합니다. 성공적으로 작동하는 대화 형 API 화면을 통해 일부 테스트 요청을 성공적으로 마쳤습니다. 그런 다음 이러한 세션을 비 세션 기반 인증 전략을 사용하여 변환하려고 시도하고 일관되게 오류가 발생했습니다. 내가 보낸 요청은 형식은 다음과 같습니다왜이 장고 REST API에 POST 할 수 없습니까?
POST /api/logs/ HTTP/1.1
Host: host:8080
Connection: keep-alive
Content-Length: 258
Accept: application/json
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryTOhRsMbL8ak9EMQB
Authorization: Token -token-
------WebKitFormBoundaryx6ThtBDZxZNUCkKl
Content-Disposition: form-data; name="SubmittedAt"
2014-01-23T10:39:00
------WebKitFormBoundaryx6ThtBDZxZNUCkKl
Content-Disposition: form-data; name="Device"
CheeseDevice
------WebKitFormBoundaryx6ThtBDZxZNUCkKl--
슬프게도, 결과는 (내가 실행 한 모든 요청에 대해)되었습니다 흥미롭게
{"Device": ["This field is required."], "SubmittedAt": ["This field is required."], "LogFile": ["This field is required."]}
, 내가 할 수있었습니다 엔드 포인트까지 JSON의 덩어리를 보내고, 예상대로 그들은, 예를 접수하고 있습니다 :
POST /api/logs/ HTTP/1.1
Content-Type: application/json
Host: host:8080
Connection: keep-alive
Content-Length: 35
Accept: application/json
Authorization: Token -token-
{
"Device": "CheeseDevice"
}
결과 :
{"SubmittedAt": ["This field is required."], "LogFile": ["This field is required."]}
을
예상대로 - 실제로 장치 인수를 수락하고 누락 된 항목의 오류 만 발생시킵니다. JSON 사용으로 전환 하겠지만 슬프게도 파일을 업로드 할 수는 없습니다 ...
미리 도움을 청하십시오!
편집 :
추가 조사 (예 :. request.DATA 어떤 이유로, 채워지고되지 않는다는 것을 보여줍니다 요청 데이터를 반환하는 뷰 방법을 쓰는 방법 디버그 다음에 내가 사용하고 있습니다 :
def test_create(self, request, pk=None):
return Response(request.DATA)
편집 2 :는
더욱 조사 (및 디버깅을위한 프레임 워크 코드를 다운로드 청크를 삭제하는)을 REQ 것을 나타낸다 uests가 _perform_form_overloading에 잡히지 않고 MultiPartParser에 절대로 도달하지 않습니다. 왜 이런 일이 일어나고 있는지 확실하지 않지만 더 자세히 살펴 보겠습니다.
감사합니다. 지금까지 두 가지를 모두 제외하려고 시도했습니다. 다중 부분 본문 (및 Content-Type 헤더)은 API 브라우저의 "HTML 양식"섹션에서 생성 된 요청에서 제외되므로 유효해야하며 response.parsers list에 MultiPartParser 객체 ()가 포함되어 있습니다. MultiPartParser의 입력에 특별한 제한이 없다고 가정하고 있습니까? –
tr00st