Flask -RESTful, получая 404 для конечной точки, если я не ставлю параметр url в конце - PullRequest
1 голос
/ 05 января 2020

Мои конечные точки:

# Routes
service.add_resource(UserRegister, "/register") # Works
service.add_resource(User, "/users/<int:user_id>") # Works
service.add_resource(CategoryListResource, "users/<int:user_id>/categories") # 404 not found
service.add_resource(CategoryResource, "/categories/<int:category_id>") # Works
service.add_resource(TaskListResource, "categories/<int:category_id>/tasks") # 404 not found
service.add_resource(TaskResource, "/tasks/<int:task_id>") # Works

Мои модели структурированы таким образом, что у каждого пользователя есть несколько категорий, и у каждой категории есть определенные задачи, которые ему принадлежат. Поэтому я хотел, чтобы мой API отражал это. Когда я хочу получить все категории, принадлежащие пользователю с помощью user_id = 3, я бы набрал service/users/3/categories, однако это дает мне 404 не найденных:

"GET /service/users/3/categories HTTP/1.1" 404 -

Но когда я изменяю свою конечную точку, например, на :

service.add_resource(CategoryListResource, "example/<int:user_id>") # Works fine now

Это будет прекрасно работать, но это не то, чего я хочу, так как это не express логика c, о которой я упоминал ранее. Есть ли способ, чтобы параметры URL появлялись в середине конечной точки с помощью Flask -RESTful или мне нужно согласиться на другой подход?

PS service - это url_prefix Плана и это не вызывает никаких проблем, на самом деле все конечные точки, имеющие параметры URL только в конце, работают нормально.

1 Ответ

0 голосов
/ 06 января 2020

Попробуйте изменить users/<int:user_id>/categories на /users/<int:user_id>/categories

...