BAE
BAE

Reputation: 8936

Django: URL trailing slash issue

urls.py

url(r'^v1/files/$', MyFileView.as_view(), name='api-upload'),
url(r'^v1/files/$', MyFileView.as_view(), name='api-view-all'),

views.py

class MyFileView(APIView):
    def post():
        pass
    def get():
        pass

My question is: why POST api/v1/files works like GET api/v1/files/? I thought POST api/v1/files should return 404. Anything wrong?

UPDATE

But api/v1/files/<id> does not have this issue. api/v1/files/<id>/ will return 404. Thanks

Upvotes: 0

Views: 505

Answers (1)

LSerni
LSerni

Reputation: 57378

I think that they don't "work like GET".

What is really happening is that:

  • you send a POST url
  • the server replies with a HTTP 302 to url/
  • and the browser performs a GET url/.

And the result of that is what you actually see.

If you check the requests being actually sent along the wire, I suspect you'll see two requests - the first being the POST, the second being the GET.

Upvotes: 2

Related Questions