最近想把之前写过的一些工具给整合起来,前端弄好了,现在主要是后端 API 这块。以下是为了方便举例我故意简化,实际开发中文件比较庞大:
假设现在有 3 个 APP,分别叫“app1”, "app2", "app3"。如果是所有 app 的 api 都放在一个 app.py
文件,那就是:
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/api/app1/greeting/<inputText>', methods=['POST', 'GET'])
def app1_greeting(inputText):
return "Greeting from app1: Hello {}".format(inputText)
@app.route('/api/app2/greeting/<inputText>', methods=['POST', 'GET'])
def app2_greeting(inputText):
return "Greeting from app2: Hello {}".format(inputText)
@app.route('/api/app3/greeting/<inputText>', methods=['POST', 'GET'])
def app3_greeting(inputText):
return "Greeting from app3: Hello {}".format(inputText)
if __name__ == '__main__':
app.run()
现在为了方便后期维护管理,我想把这些 app 写在不同的.py
文件里面当作一个 package 来导入到主文件中,文件目录结构如下:
那么我现在写成如下:
# app.py
from flask import Flask
from flask_cors import CORS
from app1 import app1_greeting
from app2 import app2_greeting
from app3 import app3_greeting
app = Flask(__name__)
CORS(app)
@app.route('/api/app1/greeting/<inputText>', methods=['POST', 'GET'])
app1_greeting()
@app.route('/api/app2/greeting/<inputText>', methods=['POST', 'GET'])
app2_greeting()
@app.route('/api/app3/greeting/<inputText>', methods=['POST', 'GET'])
app3_greeting()
if __name__ == '__main__':
app.run()
# print(app1_greeting('John'))
然后 package 如下:
# app1.py
def app1_greeting(inputText):
return "Greeting from app2: Hello {}".format(inputText)
显然这是错的,因为运行报语法错误。
那么请问老哥们,应该如何写呢?
谢谢!👍👍
1
christopheredwar 2021-07-02 14:38:52 +08:00 via Android 1
blueprint+namespace,目前参加的项目就是这么扩展 API 的
|
2
Via8veritas 2021-07-02 14:48:05 +08:00 1
用 add_url_rule 把方法和路由手动绑定
|
3
jk1030 2021-07-02 14:48:13 +08:00 1
blueprint 吧
|
4
sudoy OP |