Я не вижу большой разницы между параметрами и строками запросов в URL. Так в чем же разница и когда нужно использовать над этим?
В чем разница между параметрами URL и строками запроса?
Ответ 1
компонент запроса обозначается первым ?
в URI. "Строка запроса" может быть синонимом (этот термин не используется в стандарте URI).
Некоторые примеры для URI HTTP с компонентами запросов:
http://example.com/foo?bar
http://example.com/foo/foo/foo?bar/bar/bar
http://example.com/?bar
http://example.com/[email protected]_=???/1:
http://example.com/?bar1=a&bar2=b
(список допустимых символов в компоненте запроса)
"Формат" компонента запроса зависит от авторов URI. Общее соглашение (но не более чем соглашение, в отношении стандарта URI ¹) заключается в использовании компонента запроса для пар ключ-значение, иначе. , как в последнем примере выше.
¹ Стандарт URI говорит: "[...] компоненты запроса часто используются для переноса идентифицирующей информации в форме" key = value "пары [...]"
Ответ 2
Параметрами являются пары ключ-значение, которые могут отображаться внутри пути URL-адреса, и начинаются с символа с запятой (;
).
Строка запроса появляется после пути (если есть) и начинается с символа вопроса (?
).
Оба параметра и строка запроса содержат пары ключ-значение.
В запросе GET
параметры отображаются в самом URL-адресе:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
В запросе POST
параметры могут отображаться в самом URL-адресе, а также в потоке данных (как известно, содержимое).
Строка запроса всегда является частью URL.
Параметры могут быть захоронены в form-data
потоке данных при использовании метода POST, чтобы они не отображались в URL-адресе. Да, запрос POST
может определять параметры как данные формы и URL-адреса, и это не противоречит, поскольку параметры могут иметь несколько значений.
Я пока не нашел объяснений по этому поведению. Думаю, иногда бывает полезно "отобразить" параметры из запроса POST
или даже позволить обработать код GET
, чтобы передать некоторые части с обработкой кода POST
. Конечно, это может работать только с поддерживающими параметры кода сервера в URL-адресе.
Пока вы не получите более полную информацию, я предлагаю вам использовать параметры только в form-data
потоке данных POST
.
Источники: