LINUX.ORG.RU

Чем работать со swagger (openapi)

 


0

1

Всем привет. Подскажите пожалуйста новичку, придайте начальный пинок в нужную сторону. Есть программный продукт, у него есть API (OPENAPI3/SWAGGER). Я могу curl-ом давать в него запросы, получать данные в формате json. Но как это автоматизировать? Не вручную же парсить ответы через grep или findstr? Может есть какой-то способ наподобие загрузить расширение для vscode, загрузить туда schema и чтобы получать по запросам данные в готовом виде сразу в переменные? Ну понятно, что не сразу, а надо соответствие как-то настроить. Не могу даже для начала нагуглить что почитать, все статьи для тех, кто уже неплохо в теме.

Может есть какой-то способ наподобие загрузить расширение для vscode, загрузить туда schema и чтобы получать по запросам данные в готовом виде сразу в переменные?

Есть, Python, Node.js, PHP и много других программ в которые встроены json парсеры

masa ★★
()

Я могу curl-ом давать в него запросы, получать данные в формате json. Но как это автоматизировать?

Создаёшь скрипт для одного запроса, который бы оставлял только важные детали, а другие скрывал. Потом используешь так:

% ./report 110777

Не вручную же парсить ответы через grep или findstr?

/bin/jq

получать по запросам данные в готовом виде сразу в переменные

В переменные? Если твоя программа должна общаться с внешним ресурсом, ищи HTTP-клиент к твоему ЯП. Например, в Go это net/http.

kaldeon
()
Ответ на: комментарий от kaldeon

У меня не то что бы программа. Я с чисто точки зрения администратора этой системы, не всё можно и удобно делать через её GUI. Нужно иметь (написать) скрипты на разные случаи жизни, и вот ищу способ полегче это сделать. Отправить запрос в систему через swagger, получить ответ, распарсить его получив данные, обработать эти данные, сделать новый запрос в систему и т.д. Прошлая система управлялась через Powershell, там были свои командлеты и всё было проще. )

Вышеописанные варианты попробую, спасибо. Особенно интересует Питон, тут корпоративная среда, и в ней он уже есть.

Deepdig
() автор топика
Ответ на: комментарий от aol

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

Даже для bash есть генератор, но интересно насколько удобно этим пользоваться вместо сырого curl/jq.

kaldeon
()
Ответ на: комментарий от Deepdig

Можно попробовать jupyter плагин в VSCode. Создаешь файл .ipynb там пишешь код на питоне, получаешь результат, потом можешь с ним что-то сделать еще. https://code.visualstudio.com/docs/datascience/jupyter-notebooks

Чтобы из питона запросы в апи слать надо использовать библиотеку requests или httpx (первая более старая, сейчас вроде все вторую используют)

masa ★★
()

загрузить туда schema и чтобы получать по запросам данные в готовом виде сразу в переменные?

Правильная формулировка проблемы - половина её решения. Какой конечный результат вам нужен? Нужно просто агрегирован данные в табличку CSV или делать постобработку?

dmaj
()

Если программирование не вариант, то советую покопать в сторону Postman - простая и интуитивно понятная программа. И загуглив я узнал, что импорт Swagger API тоже возможен

https://learning.postman.com/docs/getting-started/importing-and-exporting/importing-from-swagger/

dmaj
()
Ответ на: комментарий от dmaj

Если программирование не вариант, то советую покопать в сторону Postman - простая и интуитивно понятная программа. И загуглив я узнал, что импорт Swagger API тоже возможен

Тяжелая, и норовит всё в облако утащить. Лучше Bruno, ну или Insomnia

skyman ★★★★
()
Ответ на: комментарий от masa

А я уже говорил, и ещё раз скажу, что мне удобнее всего curl + jq. Сколько раз не пытался использовать GUI типа Postman и его аналогов для отладки/тестирования API, моментально возвращался обратно. Мне реально кажется, что так намного удобнее.

Chiffchaff
()
Ответ на: комментарий от aol

Поставил я этот swagger codegen, сделал им клиента для питона, пытаюсь импортировать его в Питон. Сначала поставил несколько зависимостей, в итоге при попытке импорта выдаёт:

import swagger_client

File «C:\Program Files\Python313\Lib\site-packages\swagger_client-1.0.0-py3.13.egg\swagger_client_init_.py», line 18, in

from swagger_client.api.access_device_list_api import AccessDeviceListApi

File «C:\Program Files\Python313\Lib\site-packages\swagger_client-1.0.0-py3.13.egg\swagger_client\api_init_.py», line 6, in

from swagger_client.api.access_device_list_api import AccessDeviceListApi

File «C:\Program Files\Python313\Lib\site-packages\swagger_client-1.0.0-py3.13.egg\swagger_client\api\access_device_list_api.py», line 20, in

from swagger_client.api_client import ApiClient

File «C:\Program Files\Python313\Lib\site-packages\swagger_client-1.0.0-py3.13.egg\swagger_client\api_client.py», line 26, in

import swagger_client.models

File «C:\Program Files\Python313\Lib\site-packages\swagger_client-1.0.0-py3.13.egg\swagger_client\models_init_.py», line 166, in

from swagger_client.models.null_enum import NullEnum

File «C:\Program Files\Python313\Lib\site-packages\swagger_client-1.0.0-py3.13.egg\swagger_client\models\null_enum.py», line 27

NULL =

              ^

SyntaxError: invalid syntax

И вот тут уже с моими знаниями ступор, кто виноват и что делать. Или codegen неправильно сгенерил, или API выдаёт неправильный файл yaml, на основе которого codegen делает клиента для импорта.

Deepdig
() автор топика
Ответ на: комментарий от Deepdig

C:\Linux Files

Всё понятно.

Та библиотека нерабочая.

Для тестирования апишек обычно встроенные средства во фреймворке есть. В каком-нибудь fastapi, django, flask… Запускаешь всё через pytest или встроенный юнитест… Я не знаю что ты тестируешь но в принципе в любом современном фреймворке на каком бы он языке не был написан есть средства для тестирования. Тестировщики пользуются всяким говном типа postman

rtxtxtrx ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)