REST API может иметь аргументы в нескольких местах:
- В теле запроса - как часть тела json или другого типа MIME.
- В строке запроса - например,
/api/resource?p1=v1&p2=v2
- Как часть URL-пути - например,
/api/resource/v1/v2
Каковы лучшие практики и рекомендации по выбору между 1 и 2 выше?
2 против 3 рассматривается здесь .
Ответы:
Обычно тело содержимого используется для данных, которые должны быть выгружены / загружены на / с сервера, а параметры запроса используются для указания точных запрошенных данных. Например, когда вы загружаете файл, вы указываете имя, тип MIME и т. Д. В теле, но когда вы получаете список файлов, вы можете использовать параметры запроса для фильтрации списка по некоторым свойствам файлов. Как правило, параметры запроса являются собственностью запроса, а не данными.
Конечно, это не строгое правило - вы можете реализовать его любым способом, который вам больше подходит / работает для вас.
Вы также можете проверить статью в Википедии о строке запроса , особенно о первых двух абзацах.
источник
Я предполагаю, что вы говорите о запросах POST / PUT. Семантически тело запроса должно содержать данные, которые вы публикуете или исправляете.
Строка запроса, как часть URL-адреса (URI), указывает, какой ресурс вы публикуете или исправляете.
Вы просили поделиться лучшими практиками, следующая семантика - моя. Конечно, использование ваших эмпирических правил должно работать, особенно если веб-фреймворк, который вы используете, преобразует это в параметры .
Вы знаете больше всего:
источник
Вот мои практические правила ...
Когда использовать тело:
Когда использовать строку запроса:
curl
application/octet-stream
Обратите внимание, что вы можете смешивать и сопоставлять - поместите общие, те, которые должны быть отлажены, в строку запроса, а все остальное бросьте в json.
источник