Я пытаюсь создать маршрут пирамиды для запроса PUT
в API RESTful для создания нового ресурса. В моем приложении используется обход, который отлично работает для GET
и POST
:
config.add_route('myroute', '/resources/*traverse')
Поскольку PUT
должно иметь новое имя ресурса в URL-адресе, это, очевидно, не работает с PUT
, поскольку в конце есть неизвестный ресурс, поэтому обход не удается. Я попытался создать новый маршрут для PUT
, используя гибридный подход к отправке и обходу URL:
config.add_route('myroute_put', '/resources/{path}/{new}', traverse='/{path}', request_method='PUT')
Это прекрасно работает тогда и только тогда, когда нужно пройти только сегмент пути. Имя нового ресурса доступно как request.matchdict['new']
Если мы находимся на корневом уровне, и нам нечего проходить, мы все равно можем заставить это работать, создав вспомогательный маршрут:
config.add_route('myroute_put_root', '/resources/{new}', reqeust_method='PUT')
Однако это не настоящее решение, потому что myroute_put
по-прежнему не соответствует, если необходимо пройти более одного сегмента пути, например, для URL: /resources/path1/path2/new_resource