Как передать несколько параметров в get
Перейти к содержимому

Как передать несколько параметров в get

  • автор:

 

Web Api как сделать несколько параметров в Get запросе? И делают ли так?

Добрый всем день!
Подскажите, пожалуйста, начинающему как в web api и можно ли, передать в запросе несколько параметров?

Я выполняю урок на метаните. Есть тестовая база пользователей:

Как с помощью Get запроса вывести всех пользователей у которых возраст 32 и имя начинается на «А»?
Или это делается по другому? Ибо [HttpGet(««)] вызывает ошибку на этапе компиляции.

  • Вопрос задан более трёх лет назад
  • 2174 просмотра
  • Facebook
  • Вконтакте
  • Twitter

Этот тестовый пример далек от реального проекта немного. Все зависит от предметной области (доменной области). Обычно такие вещи выносятся все-таки в гет-параметры
/users?age=32&name=Tom

а в сегменты url немного другие вещи. Сравните
/users/blocked
/users/active
/users/1 — тут получаем конкретного юзера с >
гуглите restful api design

  • Facebook
  • Вконтакте
  • Twitter

Спасибо, что откликнулись!
На этом примере я по экспериментировал, и начал изучать, что к чему.
С получением данных по конкретному пользователю (его id) или по списку, с возрастом 32 — проблем не возникло. А вот с двумя переменными я не справился.

/users?age=32&name=Tom — такой параметр вполне подойдёт. Надо только понять, как его правильно прочитать на стороне web api.

GET запросы в PHP

Вы уже знаете, что при отправке формы методом GET в адресной строке браузера после знака ? появляются данные формы. Эти данные в PHP коде будут доступны в массиве $_GET .

На самом деле наличие формы на страницы является не обязательным — мы можем просто руками написать в адресной строке знак вопроса, после него перечислить параметры с их значениями и нажать энтер.

В этом случае введенные нами данные также будут доступны в массиве $_GET . То есть получится имитация отправки формы. Такая имитация называется . Такие слова означают, что мы должны руками вбить в адресную строку вопросик и параметры запроса.

Параметры запроса перечисляются в следующем формате: имя, затем знак равно, затем значение параметра. Если параметров несколько, то они разделяются знаком амперсанд & .

Давайте попробуем на примерах. Пусть у вас есть некоторый PHP файл. Обратитесь к нему в браузере, как вы обычно это делаете. А затем добавьте в конец адресной строки ?par1=1 и нажмите энтер.

В результате наш параметр будет содержаться в $_GET[‘par1’] :

Давайте теперь отправим не один параметр, а два. Для этого добавьте в конец адресной строки это: ?par1=1&par2=2 и нажмите энтер. Вот, что получится в результате:

Отправьте с помощью GET -запроса число. Выведите его на экран.

Отправьте с помощью GET -запроса число. Выведите его на экран квадрат этого числа.

Отправьте с помощью GET -запроса два числа. Выведите его на экран сумму этих чисел.

Пусть с помощью GET -запроса отправляется число. Сделайте так, чтобы если передано число 1 — на экран вывелось слово ‘hello’ , а если 2 — то слово ‘bye’ .

Пусть с помощью GET -запроса можно передать число. Сделайте так, чтобы на экран вывелся элемент массива с переданным в запросе номером.

HTTP-запрос методом GET.

Одним из способов, как можно отправить запрос по протоколу HTTP к серверу, является запрос методом GET. Этот метод является самым распространенным и запросы к серверу чаще всего происходят с его использованием.

Самый простой способ, как можно создать запрос методом GET- это набрать URL-адрес в адресную строку браузера.

Если у вас есть желание погрузиться в тему серверного программирования глубже, все мои уроки здесь.

Браузер передаст серверу примерно следующую информацию:

Запрос состоит из двух частей:

1. строка запроса (Request Line)

2. заголовки (Message Headers)

Обратите внимание, что GET запрос не имеет тела сообщения. Но, это не означает, что с его помощью мы не можем передать серверу никакую информацию. Это можно делать с помощью специальных GET параметров.

Чтобы добавить GET параметры к запросу, нужно в конце URL-адреса поставить знак «?» и после него начинать задавать их по следующему правилу:

 

К примеру, если мы хотим передать серверу два значения, имя пользователя и его возраст, то это можно сделать следующей строкой:

Когда выполнен данный запрос, данные попадают в так называемую переменную окружения QUERY_STRING, из которой их можно получить на сервере с помощью серверного языка веб-программирования.

Вот пример, как это можно сделать на языке PHP.

Конструкция $_GET["имя_параметра"] позволяет выводить значение переданного параметра.

GET-запросы в PHP

loader

Итак, пришло время нам начать взаимодействовать с пользователем.

Как мы говорили ранее, PHP работает на сервере. Отсюда следует вопрос, а как же нам из браузера начать с ним взаимодействовать? Например, заполнить форму логина на сайте и отправить данные на сервер, чтобы наш код с ним что-нибудь сделал.

Именно об этом мы и поговорим в этом уроке.

Итак, давайте удалим все наши файлы в проекте и создадим новый пустой файл с именем index.php. Запишем в него следующий код:

Давайте выполним этот скрипт, открыв в браузере адрес:
http://myproject.loc/index.php

Как мы помним из этого урока, мы отправляем запрос веб-серверу, он понимает, что мы запрашиваем PHP-скрипт, выполняет его с помощью интерпретатора и возвращает нам ответ в виде результата выполнения этого скрипта.

Возникает вопрос: «А как можно передать от пользователя внутрь скрипта какие-либо данные?». Ответов на него у нас сразу несколько, и все мы их рассмотрим в этом уроке.

Метод GET

Когда мы вбиваем адрес скрипта и нажимаем Enter, выполняется GET-запрос по протоколу HTTP. В этом типе запроса к основному адресу мы можем прикрепить дополнительные параметры. Для того чтобы передать их, в конце основного адреса ставится знак вопроса, и мы можем перечислять эти параметры — вот так:
параметр1=значение1.
При этом если нам нужно указать несколько параметров, то мы разделяем их с помощью знака амперсанда:
арг1=знач1&арг2=знач2.

Если сейчас перейти по этой ссылке в браузере, то на сервер передадутся 2 параметра:

  • arg1 со значением 123;
  • arg2 со значением scrrr.

Мы можем очень просто получить к ним доступ из PHP с помощью магической переменной $_GET. Эта переменная является суперглобальной, то есть доступна нам в PHP всегда и в любом месте. Она представляет собой ассоциативный массив, в котором хранятся все переданные в запросе GET-параметры.

Давайте изменим код нашего index.php, чтобы узнать, что именно хранится в этой переменной.

Мы увидим следующее:

Как мы можем видеть, это действительно наши переданные аргументы, представленные в виде ассоциативного массива.

Учимся обрабатывать параметры

Разумеется, мы можем обращаться к этим элементам как к элементам обычного массива. Например, так:

Давайте создадим простую страничку, на которой мы будем выводить переданные с помощью GET-запроса логин и пароль.

Обновим нашу страничку в браузере и увидим результат.
Обработанные query-параметры

Отлично, мы успешно обработали данные, которые нам пришли от пользователя.

Учимся работать с формами

Давайте теперь вспомним уроки про формы из курса по HTML и сделаем простейшую форму для отправки GET-запроса на страничку.

Давайте запишем в наш index.php следующий код:

И давайте теперь откроем его в браузере: http://myproject.loc/index.php

Как мы видим по исходному коду, форма отправит аргументы login и password с введенными значениями на адрес /login.php.

Давайте введем в поля значения admin и Pa$$w0rd соответственно и нажмем на кнопку «Войти».
Форма входа

Где сервер нам скажет о том, что такой странички не найдено.
Ошибка 404

Отлично! Так давайте же её создадим! Создаём рядом с нашим index.php файл с именем login.php. И пишем в него следующий код:

Вернёмся на нашу форму и повторно отправим пароль. Теперь мы увидим информацию о том, что мы успешно авторизовались. Это простейший прототип формы авторизации. Разумеется, он сильно упрощён, не всё сразу. А пока – делаем домашнее задание.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *