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

— Виглядає як посилання, — зауважує Тьома.

— Так це і є посилання. Тільки веде не на красиву сторінку, а до віконця з даними. І таких віконець у сервісу багато: одне за годину, інше за день, третє — лише для сильних поштовхів. Різні кінцеві точки — різні віконця однієї контори. Запамʼятай ланцюжок: сервіс → у нього є API → в API є кінцеві точки → кожна віддає свій набір даних. І дві речі не плутай: 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.

— Тобто я тепер знаю, до якого віконця підійти і що мені повернуть, — Тьома відкидається на стільці.

— Знаєш, — киває Льоха. — Залишилося зрозуміти, як зробити, щоб до цього віконця ШІ ходив сам, а не ти копіював руками. І як дотягнутися до того, у чого такого зручного віконця взагалі немає. Завтра покажу — там є одна гарна штука.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ