Предоставить функции класса Python как службы REST

1

Поэтому у меня есть библиотека Python, которая содержит кучу супер полезных функций. Я хотел бы иметь возможность вызывать функции этой библиотеки через интерфейс RESTful, чтобы сделать функции доступными для любого языка, приложения или процесса, который поддерживает сокеты и хочет их использовать.

Я не хочу кодировать каждую функцию отдельно, как транзитную пересылку RESTful, поскольку есть сотни доступных, и все они могут быть изменены. Существует ли стандарт, совместимый со стандартами, для предоставления доступа к этим функциям через REST?

Большое спасибо за любые идеи, ссылки на проекты или советы, которые любой может дать :)

FR

  • 0
    Вы можете использовать Flask и создать только один маршрут, в котором вы указали бы функцию, которую хотите использовать, а полезная нагрузка тела будет содержать параметры.
Теги:
rest

2 ответа

2
Лучший ответ

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


main.py

from flask import Flask
from flask import request

import functions

app = Flask(__name__)


@app.route('/call/<function_name>', methods=['GET', 'POST', 'PUT', 'DELETE'])
def call_function(function_name: str):
    function_to_call = getattr(functions, function_name)
    body = request.json
    return function_to_call(body)


app.run(host="0.0.0.0")

functions.py

def hello_world():
    return "Hello world!"


def hello_name(params: dict):
    name = params["name"]
    return "Hello " + name

Примеры запросов:

  • ПОЛУЧИТЬ

http://localhost:5000/call/hello_world

  • СООБЩЕНИЕ

http://localhost:5000/call/hello_name

{
  "name": "Tom"
}
1

Я делаю то же самое прямо сейчас для ряда инструментов случайных удалений, которые у нас есть. Это не будет золотой стандарт работы конечной точки RESTful, но иногда вам просто нужно что-то быстрое и грязное. Вот что я сделал:

  1. Создайте простую футлярную программу. Вот хорошее руководство, чтобы вы начали
  2. Для вашего конкретного варианта использования вы должны создать единую конечную точку REST и указать на свой скрипт. Используйте HTTP-тип запроса "GET", чтобы вы могли использовать параметры URL.
  3. Оттуда вы можете передавать параметры по URL-адресу. Итак, если ваш сценарий принимает три аргумента, добавьте следующее после вашего URL '? Foo = 1 & bar = 2 & blarg = 3'

Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню