В настоящее время я разрабатываю API, и у меня возникла небольшая проблема: Как должен выглядеть URL-адрес RESTful API, когда вы сможете идентифицировать элемент с помощью идентификатора или пули?
Я мог бы подумать о трех вариантах:
GET /items/<id>
GET /items/<slug>
Это требует, чтобы слизняк и идентификатор были различимы, что не обязательно дается в этом случае. Я не могу придумать чистого решения этой проблемы, кроме того, что вы делаете что-то вроде этого:
GET /items/id/<id>
GET /items/slug/<slug>
Это будет работать нормально, однако это не единственное место, где я хочу идентифицировать элементы либо с помощью slug, либо с ID, и вскоре он станет очень уродливым, когда вы захотите реализовать тот же подход для других действий. Это просто не очень расширяемо, что приводит нас к такому подходу:
GET /items?id=<id>
GET /items?slug=<slug>
Это, кажется, хорошее решение, но я не знаю, можно ли этого ожидать, и, следовательно, это может привести к расстраивающим ошибкам из-за неправильного использования. Кроме того, это не так просто - или пусть говорят - чистить - реализовать маршрутизацию для этого. Однако он был бы легко расширяемым и выглядел бы очень похожим на метод для получения нескольких элементов:
GET /items?ids=<id:1>,<id:2>,<id:3>
GET /items?slugs=<slug:1>,<slug:2>,<slug:3>
Но это также имеет недостаток: что, если кто-то хочет идентифицировать некоторые элементы, которые он хочет получить с помощью идентификаторов, а другие с пулями? Смешивание этих идентификаторов было бы нелегко с этим.
Какое лучшее и наиболее общепринятое решение для этих проблем? В общем, что важно при разработке такого API?