Django detail_route PUT. Пустое тело без косой черты
Этот вопрос задан не для решения проблемы, а для того, чтобы понять, почему она работает именно так.
I have ViewSet
with some detail_route
defined:
views.py
from rest_framework import viewsets
class MyViewSet(viewsets.ViewSet):
mgr_id = 'my_resource'
@detail_route(methods=['put'])
def history(self, request):
print(request.body)
urls.py
router = DefaultRouter()
router.register(r'my_resource', MyViewSet, 'r'my_resource')
Сейчас, если я вызываю свой API без косой черты:
url = "http://myserver/my_resource/history"
requests.put(url, data=json.dumps({'test': 'passed'})
There is no error but in history
request.body
is empty.
Однако, когда в конце стоит косая черта:
url = "http://myserver/my_resource/history/"
request.body
внезапно передается, как и ожидалось.
Хотелось бы узнать, почему именно так происходит? Ошибки нет, но полезная нагрузка пуста... (Кроме того, это может помочь, если кто-то также борется с этим)