Есть ли какая-то причина, почему пути API должны использовать существительные во множественном числе в отличие от единственного числа? - PullRequest
4 голосов
/ 17 августа 2011

Просто любопытно, но я делаю API и до сих пор использую URL-адреса вроде этого:

/ user / create

/ user / [id]

и теперь я добавляю

/ user / create / batch

Это заставило меня задуматься, есть ли какая-либо веская причина, по которой я должен называть конечную точку управления пользователями «пользователями», а не просто «пользователями».Опять же, может быть, это не имеет значения вообще.Я бы, по крайней мере, предположил, что должен быть последовательным в этом в любом случае.

Мысли?

Ответы [ 2 ]

7 голосов
/ 17 августа 2011

Я почти всегда использую множественное число в своем дизайне URL. Я всегда думаю о навигации по моим URL-путям, похожим на каталоги, где я спускаюсь все глубже и глубже.

Существует главный ресурс (например, /users), который выражает коллекцию, и есть подресурсы (например, /users/{userId}/items), который сам по себе является коллекцией.

Все apis и их представляющий домен, которые я видел до сих пор, соответствовали бы приведенной выше рекомендации.

Относительно вашего упомянутого /users/create/batch похоже, что вы хотите закодировать 'действие' внутри URL. В спокойном дизайне по HTTP было бы лучше, если вы используете методы HTTP POST /users (однопользовательская полезная нагрузка) или для режима пакетного создания, передающего несколько пользователей. Что означает «создать» и «партия» в вашем случае?

0 голосов
/ 17 августа 2011

Я бы сказал, что вы должны использовать «пользователя» для действий, связанных с известным конкретным пользователем, и «пользователей» для действий, связанных со всеми пользователями (например, глобальные операции очистки), изменяя пул пользователей (например, ваш *).1001 *) или для получения этой ссылки на известного конкретного пользователя.

У меня было бы /users/select или /users/search, чтобы найти / получить пользователя, или /users/cleanup, чтобы сделать что-то для всех пользователей.

Мне нужно было бы /user/[id]/operation сделать что-то для / с конкретным пользователем.

Есть аргумент, что, как вы говорите, это вообще не имеет значения ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...