Я хочу создать этого клиента и этого пользователя в Rest API. Как мне выполнить процедуру?
Подумайте, как бы вы это сделали в Интернете.
У вас, вероятно, будет какая-то страница регистрации, ресурс, который будет включать представление Форма. Элементы управления вводом формы будут описывать посетителю желаемую информацию. Когда посетитель нажимает кнопку отправки, браузер создает HTTP-запрос, согласованный с сервером обработки форм HTML, и отправляет этот запрос обратно на сервер. Сервер считывает информацию из полезной нагрузки сообщения, выполняет свою работу и отправляет обратно клиенту другую веб-страницу со статусом, дополнительной информацией, ссылками на другие интересные ресурсы и т. Д.
Для части протокол взаимодействия, который является небезопасным (это означает, что семантика запроса не является эффективно только для чтения), как, вероятно, "подписка", форма будет указывать, что токен метода POST будет использоваться в запросе - строка HTTP-запроса.
Целевым URI может быть что угодно - браузер просто скопирует любую форму form.action, заданную сервером.
POST /c4b809c9-2106-4664-8149-5d1817ca4e4b
было бы прекрасно выбор (хотя это может разочаровать операторов, которые пытаются выяснить, что происходит, просматривая журналы HTTP). . Так что это может быть более знакомо
POST /signups
Вы можете создать дополнительные ресурсы (да, более одного) при обработке запроса POST; таким образом, ваш обработчик POST регистрации может создавать ресурсы для клиента и пользователя.
Каждый из этих ресурсов будет иметь свой собственный URI.
/companies/1
/users/3
Это было бы хорошо. С механической точки зрения может быть преимущество использования общего стержня для обоих. Опять же, подсказки semanti c в журналах могут помочь операторам в их расследованиях. Кроме того, если два URI имеют одинаковый root, вы можете использовать точечные сегменты, чтобы ссылаться на один ресурс из другого в более общем виде
<base href="/companies/1/users/3">
<a href="./4">/companies/1/users/4</a>
<img src="../images/logo.gif" alt="/companies/1/images/logo.gif">