TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.47K subscribers
Post #287 131
Chainlink Connect to API. Часть 6

Открываем index.js.

const { Requester, Validator } = require('@chainlink/external-adapter')

Обязательный пакет для подключения, он помогает отправлять запросы и обрабатывать их.

Дальше в customError вы можете настроить обработку пользовательских ошибок, но можно и оставить без изменений.

В customParams мы записываем все параметры, которые можно будет запрашивать в смарт контракте.

Например в шаблоне есть строка:

base: ['base', 'from', 'coin']

которую можно заменить на

city: ['city', 'town']

если мы хотим, например, запрашивать температуру в определенном городе. Тогда в смарт контракте потребуется прописать строку запроса:

req.add("city", "boston");

Так же тут можно указать необязательные параметры, которые, возможно, будут в API ссылке, как, например, тут:

https://api.openweathermap.org/data/2.5/weather?q=<CITY_NAME>&appid=<YOUR_API_KEY>

где weather - и есть endpoint.

Endpoint, грубо говоря, это некая точка запроса на стороне сервера, которая выдает определенные параметры. В случае с weather она может отдавать температуру в int, а, например, с storm - есть ли угроза торнадо в регионе в булевом значении.

Иногда эти endpoint нужны в ссылке API, а иногда можно обойтись и без них. Поэтому этот параметр не обязателен.

Далее идет функция создания запроса createRequest. И тут обратим внимание на код внутри:

const validator = new Validator(callback, input, customParams)

создает объект Валидатора, куда передается callback (об этом позже), input от пользователя в контракте, параметры, которые мы прописали выше.

const jobRunID = validator.validated.id

Здесь функция получает jobId. Если забыли, что это такое, то прочитайте посты выше.

const endpoint = validator.validated.data.endpoint || 'price'

еще раз проверяем endpoint и через символ "||" указываем значение по умолчанию,

const url = `https://min-api.cryptocompare.com/data/${endpoint}`

и передаем ссылку API.

const appid = prosess.anv.API_KEY;

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

В конце мы создаем переменную, куда помещаем данные о параметрах запроса, в нашем случае это city:

const cityData = validator.validated.data.city.toUpperCase()

Приведение к одному регистру нужно для дополнительной корректности передачи значений.

Далее в const params мы передаем cityData и appid.

Переменная const config будет работать типа axios, это такой способ передачи данный через url. И тут не нужно указывать дополнительные значения типа "get" или "headers".

После подготовки запроса мы создаем функции отправки запроса - Requester.request(), где в качестве аргументов передаются config и customErros.

response.data.result = Requester.validateResultNumber(response.data, ["path", "data"])

В этой строке особое внимание заслуживает ["path", "data"] - где определяется путь в json файле по ссылке до нужной нам информации. Например:

Из файла {"region": {"city":"boston"} - нужно будет передать ['region', 'city']

И затем вызывается callback функция:

callback(response.status, Requester.success(jobRunID, response))

В принципе, это все. Дальше код нам не интересен, так как он выполняет скорее служебные функции.

Как я уже говорил, после написания Адаптера, нам нужно подключить его к узлу, настроить Bridge и jobId, и запустить на нем Адаптер. После всех этих манипуляций вы можете написать смарт контракт, сделать деплой и запрашивать информацию с нужного API.

#chainlink #api #adapter
More from @solidityset
  1. Oct 15, 2026Немного новостей про Core Solidity Команда Solidity опубликовала обновление о разработке C…
  2. Oct 8, 2026Промо видео для SaaS и других ваших проектов Хочу поделить с вами одним из своих открытий…
  3. Oct 8, 2026video post
  4. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  5. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  6. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →