tamasgobesz
tamasgobesz

Reputation: 185

Django Rest API POST issues

I'm trying to build a very simple REST API in Django 1.8 with Django REST Framework in Visual Studio, in which I want to have a single service method to process a JSON, but I can't seem to make a POST:

I'm trying to send this simple JSON through Postman, just as a test:

{
   "foo":"bar"
}

with the header:

Content-Type: application/json

Here's my method:

@csrf_exempt
@api_view(['POST'])
def test(request):
    data = request.data
    return HttpResponse(status=200)

But my problem is that request.data is empty. And if instead I try to access request.body, I get

You cannot access body after reading from request's data stream.

Any ideas what could be the issue here?

Upvotes: 7

Views: 4325

Answers (4)

Yeo
Yeo

Reputation: 11814

I have the same problem when using POSTMAN.

Solved and Credit goes to https://stackoverflow.com/a/31977373/764592

Quoted Answer:

Request payload is not converted into JSON format.

I am passing my data in Body as x-www-form-urlencoded

enter image description here

You can fix it by using Content-Type as application/x-www-form-urlencoded in request header.

enter image description here

Upvotes: 1

tamasgobesz
tamasgobesz

Reputation: 185

Figured this out somewhat, it seems to be an issue with Visual Studio while in debug mode. If I try to access the request while debugging before calling any Python function on it (such as a simple print, or passing in to a function to parse it), it shows up as an empty QueryDict, otherwise it shows up fine.

Upvotes: 2

Jared Knipp
Jared Knipp

Reputation: 5950

This may help Where's my JSON data in my incoming Django request?

Outside of this, make sure the content-type and accept-type are set properly. What is the raw response in Postman? Is the security setup properly?

Upvotes: 1

Ihor Pomaranskyy
Ihor Pomaranskyy

Reputation: 5641

Just a guess: maybe the issue is in Postman?

Try to send POST-request without headers, but with raw JSON (not form-data):

enter image description here

Upvotes: 1

Related Questions