Я пытаюсь найти лучший / правильный способ для создания URL-адресов моих остальных API, но я запутался в ресурсах компании.
REST не заботится о том, какое правописание вы используете для своих URL, если они соответствуют RFC 3986 . URI являются идентификаторами , не требуется, чтобы написание идентификатора было каким-либо образом связано с его семантическим значением.
Удобочитаемый URI очень похож на понятные человеку имена переменных - не обязателен, но, безусловно, удобен, когда речь идет о людях. Поэтому написание должно быть выбрано в первую очередь в соответствии с местными соглашениями.
Чтобы получить более подробную информацию о компании, мне нужно предоставить две другие таблицы из какой-то конечной точки API.
Отчасти REST заключается в том, что ваша модель ресурсов может не быть тесно связана с вашей моделью данных. «В интернете никто не знает, что ты собака». Вы, конечно, можете создать ресурсы для каждой части вашей реляционной схемы.
Просто знайте, что никто с опытом не обещает, что результат будет жизнеспособным в долгосрочной перспективе.
Я отклоняю опцию 1 по одной причине, которую я нашел в SO, т.е. пути с параметрами не могут быть кэшированы.
Я почти уверен, что это очень плохой ответ и, следовательно, плохая поддержка данного дизайна. Но опять же, REST не заботится о правописании.
http://localhost:8085/api/v1/company/1?type=mechanical
http://localhost:8085/api/v1/company/1/mechanical
http://localhost:8085/api/v1/company/mechanical/1
Все это отлично .
Одной из причин предпочтения одного порядка сегментов пути является использование точечных сегментов и относительное разрешение ; то есть, что произойдет, если мы возьмем URI выше и попытаемся разрешить относительный путь-ссылку ..
http://localhost:8085/api/v1/company
http://localhost:8085/api/v1/company/1
http://localhost:8085/api/v1/company/mechanical
Учитывая то, что вы описали здесь, вариант # 2 выглядит более полезным, чем его кузены.
Если относительное разрешение не является важным вариантом использования, то вы можете рассмотреть возможность использования нового ствола
http://localhost:8085/api/v1/mechanical-company/1
Во первых это должны быть / компании
Только если это местное соглашение о правописании.
/company/1
/companies/1
/c5y/1
/c6s/1
/compagnie/1
/c5be6eed-3df2-4987-aceb-1b2f8909cb85/1
/purpleMonkeyDishwasher/1
Ни одна из машин не заботится о том, какое из этих написаний вы используете.