Все неловкие вопросы, которые я задавал на этой неделе, изучая веб-разработку…
Эпическая битва с синдромом самозванца на этой неделе требует от меня признания, что я никогда раньше не использовал строки запроса.
Что я узнал
- «json - это XML для Интернета». Спасибо: heart: кем бы вы ни были, кто придумал эту аналогию. Я постоянно говорю себе это всякий раз, когда получаю json обратно в запросе. Мне, возможно, придется вернуться через 10 часов различных онлайн-тренингов, чтобы найти источник этой цитаты.
- Строка запроса - это элементы ? Sort = created & direction = asc, которые идут после конечной точки API в браузере.
- Вы можете передать строку запроса через HTTParty, используя параметр: query
HTTParty.send( :get, “https://api.github.com/users/saraford/repos", :query => { “sort” => “created”, “direction” => “asc” } )
Что я еще не понимаю
- Меня легко путают с синтаксисом Ruby. В приведенном выше методе HTTParty.send я знаю, что : get в основном представляет собой нечто вроде константы, передаваемое в качестве первого параметра, но : query используется как «именованный параметр». О, рубин, как я люблю тебя.
Передача строк запроса в API
В этом разделе раскрывается один из моих самых скрытых страхов ...
Продолжая с того места, на котором мы остановились в прошлый раз (как читать документацию по API, чтобы узнать, какие параметры и куда идут), это сообщение в блоге описывает, как передать параметры, не указанные как сегмент в пути - я получил эту цитату из документы .
Раньше мы могли передать «saraford» вместо «: username» прямо в / users /: username. Круто, но что на самом деле означает «любые параметры, не указанные как сегмент в пути, могут быть переданы как параметр строки HTTP-запроса»?
Перейдем к репозиториям. Вы можете сказать: Давайте использовать эту первую конечную точку GET / user / repos, потому что это кажется достаточно простым, но помните, что мы еще не прошли аутентификацию, поэтому API не знает, с каким пользователем ответить.
Мы проведем аутентификацию, когда придет время (это не каламбур), но давайте получим немного больше от наших 60 запросов в час ...
В этом пошаговом руководстве мы рассмотрим Список пользовательских репозиториев, потому что он следующий в списке на странице, а также напоминает конечную точку API, которую мы вызывали ранее.
Во-первых, давайте получим список (общедоступных) репозиториев для указанного пользователя.
Использование веб-браузера для тестирования нашего вызова API
Написав это сообщение в блоге, я узнал, что вы можете сделать это ... передавать параметры в виде строк запроса в веб-браузере! Наконец, документация по параметрам имеет смысл !!!
Во-первых, давайте проанализируем полный URL-адрес (или это URI?) Путь вызова API, который мы собираемся сделать. Помните, что это «корневая конечная точка» + «конечная точка API»… я думаю. Кто-нибудь поправьте меня в комментариях :)
https://api.github.com/users/:username/repos
Давайте получим (публичные) репо для себя. Просмотр к
https://api.github.com/users/saraford/repos
возвращает нам тонну чепухи, я имею в виду, json для этого запроса, который представляет собой список всех репозиториев и данных, связанных с этими репозиториями.
Круто, но давайте передадим те «параметры, которые не указаны как сегмент в пути, могут быть переданы как параметр строки HTTP-запроса».
Глядя на документацию, у нас есть 3 параметра, из которых мы можем выбрать…
Давайте перейдем к сортировке по дате создания. Я собираюсь запросить, чтобы мы вернули список всех моих репозиториев в формате json по дате создания.
Мы введем в браузер…
https://api.github.com/users/saraford/repos?sort=created
И получим новое репо наверху!
Но что, если бы мы хотели отсортировать по самому старому из созданных? Держитесь за шляпы, потому что следующая часть - это то, о чем я боялся просить 10 лет ...
Вернемся к документации API, есть этот параметр направления, который принимает значения в порядке возрастания или убывания…
К счастью, всю свою сознательную жизнь в Интернете я вырезал и вставил символ &, который использовался слева и справа… так что давайте попробуем. Поместите следующее в свой браузер ... полужирный шрифт - это просто мой собственный акцент и ни на что не влияет.
https://api.github.com/users/saraford/repos?sort=created&direction=asc
и вот! Я сделал это! Мое первое репо, созданное на GitHub, указано вверху!
И моим друзьям потребовалось более 10 лет, чтобы понять это, потому что я был слишком смущен, чтобы просить о помощи. Я ужасно помню источник моих цитат, но мне вспоминается цитата о чьих-то страхах «5 минут страха против жизни страха». Я постоянно спрашиваю себя, какой из них на самом деле выбираю.
Использование Ruby для получения пользовательских репозиториев
Передача строки запроса через приложение немного отличается. Мне потребовались часы поиска в Google (потому что Google сказал: «Я понятия не имею, о чем вы просите»), чтобы выяснить этот синтаксис в Ruby / HTTParty (см. Шаг 5 ниже).
Вспомните свою дрессировку… Собака расширяет Зверя… нет, не эту дрессировку, дрессировку из последнего сообщения в блоге…
- Скопируйте / вставьте «пользовательский» метод в новый метод с именем repos_by_date_created. Простите за синтаксис. Вы примете рубиновый синтаксис в свою жизнь, когда меньше всего этого ожидаете, и измените корневую точку API + конечную точку API, как показано
def repos_by_created_date response = Timeout.timeout(30) do HTTParty.send( :get, “https://api.github.com/users/:username/repos", #TODO :username ) end pp response end
2. Теперь замените параметр «: username» своим или моим, например
“https://api.github.com/users/saraford/repos",
3. Обязательно вызовите repos_by_created_date внизу файла ruby и закомментируйте другие вызовы.
4. и попробуйте с «ruby example.rb»
и мы получаем обратно кучу json-файлов! Если вы прокрутите до конца, вы увидите AttemptOne в качестве первого репо в списке, как мы видели в нашем первом примере вызова API веб-браузера.
Круто, но теперь идет передача параметров! что подводит нас к вопросу «как же передать эти параметры через HTTParty ?!» вечеринка.
5. Добавьте следующую строку в метод отправки HTTParty.
HTTParty.send( :get, “https://api.github.com/users/saraford/repos", # and don't forget the comma on this line!! :query => { “sort” => “created”} # ADD ME! )
: query = ›{« sort »=› «created»} совпадает с нашим ? sort = created
Намекать! Если у вас возникли проблемы с поиском начала json-запроса, вы можете использовать Ctrl + F в Finder и выполнить поиск по вызову командной строки «ruby example.rb», как показано на снимке экрана.
6. Теперь нам просто нужно добавить вторую часть строки запроса.
Хм, я не знаю, так что отправляемся в Google и получаем кое-что, показывающее нам синтаксис.
Обновите строку запроса, включив в нее & direction = asc
HTTParty.send( :get, “https://api.github.com/users/saraford/repos", :query => { “sort” => “created”, “direction” => “asc” } )
и мы получаем
Бум, динамит! Клянусь, детям в наши дни это так легко. Если бы в мое время у нас был StackOverflow, я бы никогда не перестал быть разработчиком !!
Следующая неделя в синдроме самозванца
Я признаю, что учусь
- Я понятия не имею, как аутентифицировать свое приложение, не смущаясь, чтобы я мог делать более 60 запросов в час.