我正在尝试构建一些休息的API。当我尝试将代码隔离到包中时,服务不起作用,并且在服务器上找不到 URL。例如:
场景 1 [工作正常,因为我 main.py 一切都很好]
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/echo', methods=['POST'])
def echo():
message = request.get_json().get('message', '')
return jsonify({'message': message})
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
现在,当我尝试将代码隔离到不同的包中时,它不起作用。例如:
场景 2 [不起作用,因为代码位于不同的包中]
我正在 api/restful 中初始化应用程序.py
from flask import Flask, jsonify, request
app = Flask(__name__)
然后在 api/endpoints/service 中创建了一个服务.py
from api.restplus import app, jsonify, request
@app.route('/echo', methods=['POST'])
def echo():
message = request.get_json().get('message', '')
return jsonify({'message': message})
终于 main.py
from api.restplus import app
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
当我将该服务放在不同的包中时,该应用程序似乎不可见。请指教。
假设您遇到的问题是 flask 看不到您的服务,一旦您拆分代码,看起来没有任何内容在导入您的服务代码。
只需将 main.py 文件修改为如下所示即可修复它:
from api.restplus import app
import api.endpoints.service
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
希望这有帮助!
你可能想这样做 或者我建议,如果路由较少,请尝试在一个文件中包含所有内容。
from yourfile import app
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
在 yourfile.py
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/echo', methods=['POST'])
def echo():
message = request.get_json().get('message', '')
return jsonify({'message': message})