JavaRush /Курсы /Claude Code SELF /Как код дотягивается до мира: API

Как код дотягивается до мира: API

Claude Code SELF
7 уровень , 2 лекция
Открыта

1. Что такое API и зачем у сервиса два входа

— Слушай, ну хорошо. Мне нужны данные про настоящие толчки. А они вообще где лежат? Кто их знает-то? — Тёма откидывается на стуле и хмурится в экран.

— Смотри, — пишет Лёха. — Любая программа постоянно что-то просит у других. Вот у тебя на телефоне приложение погоды — откуда оно знает, что сегодня плюс восемнадцать и дождь? Само оно погоду не меряет, у него термометра нет. Оно спрашивает у того, кто меряет: у какой-нибудь метеослужбы, у её компьютеров. С землетрясениями так же. Их по всей планете ловят и публикуют геологические службы — например, USGS, геологическая служба США. Реальная организация, настоящие датчики. Вот это и есть твой источник реальных данных — не «интернет вообще», а конкретная контора, которую можно проверить.

— То есть всё что нам нужно где-то есть — бормочет Тёма. — Биржа, метеослужба… Осталось заставить их поделиться.

— Так а как взять-то? — не унимается он. — Захожу к ним на сайт и копирую таблицу руками?

— А вот тут самое интересное, — отзывается Лёха. — У каждого сервиса обычно два разных входа. Один — сайт, для людей. Заходишь, видишь красивую страницу: карта, иконки, цифры. Это для твоих глаз. Но программе твои глаза не нужны — ей нужны голые данные. Поэтому есть второй вход — API.

И тут же подбирает образ:

— Представь большую контору — банк, паспортный стол. Внутри куча народу, шкафы с папками. Ты во всё это не лезешь. Подходишь к окошку, говоришь «хочу вот это, вот мои данные» — и получаешь результат. Как там за стеной всё устроено — не твоя забота. Тебе нужны две вещи: куда подойти и как попросить. API — это такое окошко, только для программ.

— Значит, API — это дверь, а не сам банк, — медленно повторяет Тёма. — За дверью пусть хоть тысяча сотрудников, а снаружи — простое окошко.

— Именно.

2. Endpoint, запрос и ответ

— А «куда подойти» — это что, конкретный адрес? — спрашивает Тёма.

— Конкретный. Называется endpoint — «конечная точка». Обычная строка, очень похожая на адрес сайта. У USGS, например, есть открытый адрес «все землетрясения за последний час»:

https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson

— Выглядит как ссылка, — замечает Тёма.

— Так это и есть ссылка. Только ведёт не на красивую страницу, а к окошку с данными. И таких окошек у сервиса много: одно за час, другое за день, третье — только сильные толчки. Разные endpoint'ы — разные окошки одной конторы. Запомни цепочку: сервис → у него API → у API есть endpoint'ы → каждый отдаёт свой набор данных. И две вещи не путай: API — это не сайт, и API — это не «интернет вообще». Это конкретная дверь конкретного сервиса.

— А если я стукнусь по этому адресу — он мне какую-нибудь кракозябру пришлёт? Или excel. В каком виде вообще данные приходят?

— Да не пугайся, никаких кракозябр. Любой разговор с API — это два сообщения туда-сюда, — пишет Лёха. — Ты отправляешь запрос: «дай мне вот это». Сервис присылает ответ: «вот, держи». Всё. Ты этим, кстати, всю жизнь пользуешься — когда браузер открывает страницу, он под капотом делает ровно то же самое: «дай мне страницу по этому адресу». Просто тут в ответ приходит не картинка, а данные.

3. Как читать формат JSON

— Так в каком виде данные-то? — допытывается Тёма.

— Чаще всего в формате JSON. И вот тут заранее не пугайся — проще некуда. JSON — это просто аккуратно подписанный текст. Пары «название: значение». Гляди.

В чат падает маленький пример:

{
  "имя": "Хюррем",
  "возраст": 30,
  "город": "Стамбул"
}

— Читается без всякого обучения: имя — Хюррем, возраст — 30, город — Стамбул. Фигурные скобки говорят «вот одна карточка». А если карточек много — их складывают в список, в квадратные скобки. Вот и весь JSON. Это не код, который что-то делает, — это просто способ записать данные. Как таблица, только текстом.

Следом в чате — настоящий ответ USGS, урезанный, чтоб не утонуть:

{
  "metadata": {
    "title": "Землетрясения за последний час",
    "count": 7                // сколько событий пришло
  },
  "features": [               // список толчков; каждый элемент — одно землетрясение
    {
      "properties": {
        "mag": 4.2,                             // магнитуда → размер точки
        "place": "120 км к ЮЮЗ от Акари, Перу", // место → подпись
        "time": 1719230400000                   // когда (особый формат времени)
      },
      "geometry": {
        "coordinates": [-74.5, -15.9, 35.0]    // [долгота, широта, глубина_км]
      }
    }
    // ... дальше ещё шесть таких же
  ]
}

Тёма подаётся к экрану, водит пальцем по строчкам — и замирает.

— Стоп. Так это же мои поля! mag — магнитуда, place — место, coordinates — координаты. Они тут реально лежат.

— Вот именно, — отзывается Лёха. — Те самые поля, что ты выбрал, когда прикидывал, что показывать на карте, — вот они. Ты заранее решил, что выдёргивать, — и теперь просто берёшь это из features. А данные настоящие именно потому, что спрошены у того, кто их собирает, а не сгенерированы кем-то. И одна честная ловушка на будущее: в координатах сначала идёт долгота, потом широта, а не наоборот, как мы привыкли говорить. Перепутаешь — и точка уедет в океан.

4. Ключи доступа и документация API

— Слушай, а с чего USGS вообще раздаёт это всем подряд? — Тёма недоверчив. — Или так любой сервис можно дёргать?

— Не любой, — отвечает Лёха. — USGS открытый, его окошко бесключевое: подходи и бери, никто не спрашивает, кто ты. Это no-key. Повезло — землетрясения нам отдают даром. Но так не у всех. Многие сервисы хотят знать, кто к ним стучится — чтоб не пускать всех подряд, считать нагрузку, иногда брать деньги за объёмы. Тогда при регистрации тебе выдают ключ доступа, по-английски token — длинную строку из букв и цифр. Твой именной пропуск, и к каждому запросу ты его прикладываешь.

— А у меня такой ключ есть?

— К USGS не нужен, он же открытый. Понадобится — когда полезем к сервису, который просит пропуск. И это уже скоро. А пока заруби одну вещь на будущее: ключ доступа — это как пароль. Кто его получил, тот ходит к сервису от твоего имени, а если ты платишь — то и за твой счёт. Поэтому ключ не показывают кому попало и тем более не суют в первый попавшийся чат. Дойдём до живого ключа — там и потренируешься обращаться с ним правильно.

— Понял. Ключ — это пароль.

— А откуда люди вообще знают, у какой конторы какие адреса и что они возвращают? — спрашивает Тёма. — Где это искать-то?

— В документации, docs. Сервис её сам публикует для тех, кто хочет с ним работать: вот адреса окошек, вот что придёт в ответ, нужен ли ключ. Как инструкция к технике — не угадывай, а открой и посмотри. Хорошая привычка: не гадать, как работает чужой API, а сперва заглянуть в его docs.

— То есть я теперь знаю, к какому окошку подойти и что мне в руки сунут, — Тёма откидывается на стуле.

— Знаешь, — кивает Лёха. — Осталось понять, как сделать, чтоб к этому окошку ИИ ходил сам, а не ты копировал руками. И как дотянуться до того, у чего такого удобного окошка вообще нет. Завтра покажу — есть там одна красивая штука.

1
Задача
Claude code, 7 уровень, 2 лекция
Недоступна
Исправление AI-generated inventory с несуществующим модулем
Исправление AI-generated inventory с несуществующим модулем
1
Задача
Claude code, 7 уровень, 2 лекция
Недоступна
Сбор сырого материала для inventory через терминал
Сбор сырого материала для inventory через терминал
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ