Можно ли иметь слишком длинную конечную точку RESTful? - PullRequest
0 голосов
/ 08 апреля 2019

Мой сервис имеет 3 вида классов моделей: User, Project, Simulation.

Проблема в том, что Project s состоят из 6 уровней.

User> Proejct(lv1)> Project(lv2)> Project(lv3)> Project(lv4)> Project(lv5)> Project(lv6)> Simulation

Я создал URL-адрес конечной точки RESTful на основе иерархии,
и конечный результат выглядит следующим образом.

http://MY_SERVER.com/rest/project/team-members/{userId}/divisions/{divisionId}/products/{productId}/bgatypes/{bgaTypeId}/devices/{deviceId}/ballcounts/{ballCountId}/pkgsizes/{pkgSizeId}/simulations

Интересно, неправильно ли я оформляю протокол RESTful, поскольку URL становится слишком длинным.

Это лучше?использовать параметры запроса вместо переменных пути?
Любой совет будет благодарен.

+ Еще одна идея

Я думаю изменить, чтобы сделать его короче иэто моя идея.
Так как у каждого результата есть только один родитель, я хочу запросить их, указав только один параметр, равный parentId, так что это будет выглядеть так.

http://MY_SERVER.com/rest/project/team-members
http://MY_SERVER.com/rest/project/divisions?userId=user1
http://MY_SERVER.com/rest/project/products?divisionId=division32
http://MY_SERVER.com/rest/project/bgatypes?productId=product402
http://MY_SERVER.com/rest/project/devices?bgaTypeId=bgatype777
http://MY_SERVER.com/rest/project/ballcounts?deviceId=device139
http://MY_SERVER.com/rest/project/pkgsizes?ballCountId=ballcount587
http://MY_SERVER.com/rest/project/simulations?pkgSizeId=pkgsize591

Это против протокола RESTful?Какая идея лучше?

1 Ответ

0 голосов
/ 08 апреля 2019

это зависит от того, что вы подразумеваете под levels в вашем проекте.В REST каждый ресурс (например, модель таблицы базы данных, entity) должен быть переменной пути.Это будет определено как /resource/{resourceId}.Если у вас есть подресурс, скажем, у User есть Project, то у вас будет /user/{userId}/project/{projectId}.

Если уровни являются атрибутами Project, вы можете использовать параметры запроса.Вы должны будете уточнить больше о том, что уровни и что именно вы пытаетесь достичь.

...