Найти - Пользователи
Полная версия: создание собственного API на базе NUTS
Начало » Python для экспертов » создание собственного API на базе NUTS
1
Gorg
Доброго всем! Есть брокер сообщений NATS (https://github.com/nats-io/nats.py). На базе этой библиотеки я сделал класс с необходимым функционалом и теперь хочу сделать API для общения сервисов через этот класс. Вот как выглядит реализация взаимодействия сервисов:
             async def api_request(msg):
                cmd_str = msg.data.decode() #получили сообщение от внешнего сервиса
                print(f"Received a message on '{msg.subject} {msg.reply}': {msg.data.decode()}")
                match cmd_str:
                    case "help":  # return available commands
                        pass
                    case "connect":  # connect to server
                        pass
                    case "disconnect":  # disconnect from server
                        pass
                    case "run":  # start reading
                        pass
                    case "stop":  # stop reading
                        pass
                    case "config":  # get config
                        pass
                    case "status":  # get current status
                        pass
                    case "init":  # init service with new config
                        pass
                    case "write":  # write value to node
                        pass
                    case "objects":  # get objects
                        pass
                    case "test_command":  # just test
                        cmd_str = "test success!"
                ret_str = cmd_str
                await self.nc.publish(msg.reply, bytes(ret_str, 'utf-8')) #отправили ответ
            self.api_sub = await self.nc.subscribe("api", "workers", api_request) #подписались на топик и зарегали колбек
тут создается колбек для внешнего запроса(текстовое сообщение) и внутри колбека с помощью match|case должны вызываться функции сервиса в зависимости от этого запроса (пока тут заглушки). все функции вызываемые внутри колбека возвращают string.
Получается что api реализовано прямо внутри класса, а хотелось бы вынести код API в отдельный файл как это реализовано в FastApi. Т.е. другой программист, пишет свое API без оглядки на код моего класса в отдельном файле используя декоратор. Такой подход позволит избавиться от match|case, позволит отвязать класс от других зависимостей и API можно делать любое включая опциональный функционал. Спасибо за любую информацию, самому пока ничего путного в голову не приходит
Gorg
не корректное название топика. NATS по сути не причем, вопрос в том, как сделать свое API на базе существующего колбека, наверное так
py.user.next
Gorg
На базе этой библиотеки я сделал класс с необходимым функционалом и теперь хочу сделать API для общения сервисов через этот класс.
Лучше с самого начала начни. Сделай не класс, а интерфейс сначала. Напиши взаимодействие с этим интерфейсом. А потом под интерфейс делай программную часть уже, которая через этот интерфейс сможет быть задействованной.

Gorg
тут создается колбек для внешнего запроса(текстовое сообщение) и внутри колбека с помощью match|case должны вызываться функции сервиса в зависимости от этого запроса
Можешь это всё спокойно выкинуть. Неправильное проектирование привело к тому, что ты просто застрял на какой-то простой вещи.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB