公开Python类作为REST服务的功能

时间:2018-08-23 17:33:35

标签: python rest

所以我有一个Python库,其中包含一堆超级有用的功能。我希望能够通过RESTful接口调用此库的功能,以使该功能可用于支持套接字并希望使用它们的任何语言,应用程序或进程。

我不想将每个功能单独编码为RESTful传递,因为有数百种可用功能,并且它们都可能会发生变化。是否有符合标准的方法来公开这些功能以通过REST访问?

非常感谢任何人可以提供的任何想法,项目链接或建议:)

FR

2 个答案:

答案 0 :(得分:3)

我在您的问题下的评论中提出的基本内容是:


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 :(得分:1)

我现在正在为我们拥有的许多随机devops工具做同样的事情。它不会成为RESTful端点工作的黄金标准,但是有时您只需要快速又肮脏的东西。这是我所做的:

  1. 构建一个简单的Flask应用程序。 Here's a good guide to get you started
  2. 对于您的特定用例,您将创建一个REST端点,并将其指向您的脚本。使用“ GET” HTTP请求类型,以便可以使用URL参数。
  3. 从那里,您可以在URL上传递参数。因此,如果您的脚本包含3个参数,则在url'?foo = 1&bar = 2&blarg = 3'
  4. 之后添加以下内容

希望这会有所帮助。