Ответ 1
Нет ничего плохого в
PUT freight?initialZipcode={VALUE}&finalZipcode={VALUE}&weight={VALUE}
Параметры запроса также являются частью идентификации ресурса.
Параметры пути полезны для определения ресурсов, которые хорошо сочетаются в иерархии. В вашем случае ресурс не подходит хорошо в иерархии, поэтому не пытайтесь сжать параметры в сегменты пути.
Единственная проблема заключается в том, что делать, когда клиент повторно упорядочивает порядок параметров запроса. Вы относитесь к нему как к одному и тому же ресурсу, или вы 404? Если вы не кешируете ответы GET, это, вероятно, не имеет значения.
Если вы предоставили своему клиенту шаблон URI для заполнения, то есть меньше шансов, что они дадут вам параметры в неправильном порядке.
Другой вариант, если вы идете с оригинальным предложением, состоит в том, что ваш GET возвращает перенаправление и заголовок Location в URI с идентификатором фрахта. например.
GET freight?initialZipcode={VALUE}&finalZipcode={VALUE}&weight={VALUE}
=>
302 See Other
Location: freight/1232321322
Таким образом, ваш клиент не должен ничего знать о фрахтовом идентификаторе, он может просто захватить заголовок местоположения и выполнить перенаправление для выполнения GET или выполнить PUT непосредственно против любого URI в местоположении заголовок. Это означает, что если вы решите, что вам не нравится подвергать идентификатор в будущем, вы можете изменить URI, не нарушая никаких клиентов.