Все неловкие вопросы, которые я задавал на этой неделе, изучая веб-разработку…

Эпическая битва с синдромом самозванца на этой неделе требует от меня признания, что я никогда раньше не использовал строки запроса.

Что я узнал

  1. «json - это XML для Интернета». Спасибо: heart: кем бы вы ни были, кто придумал эту аналогию. Я постоянно говорю себе это всякий раз, когда получаю json обратно в запросе. Мне, возможно, придется вернуться через 10 часов различных онлайн-тренингов, чтобы найти источник этой цитаты.
  2. Строка запроса - это элементы ? Sort = created & direction = asc, которые идут после конечной точки API в браузере.
  3. Вы можете передать строку запроса через 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 ниже).

Вспомните свою дрессировку… Собака расширяет Зверя… нет, не эту дрессировку, дрессировку из последнего сообщения в блоге

  1. Скопируйте / вставьте «пользовательский» метод в новый метод с именем 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 запросов в час.