我正在尝试为我的网络应用程序的api创建一个URL前缀。我想在输入api.website.com/parameter时返回api。我正在使用Flask和Blueprint
api_bp = Blueprint('api', __name__,
template_folder='templates',
url_prefix='/api')
@api_bp.route("/")
def get_monkey_api():
address = request.args.get('address',
None)
if address and is_a_banano_address(address):
return monkey_api(banano_address)
else:
return render_template("NotABananoAddress.html"), 400
@api_bp.route("/<address>")
def monkey_api(address):
monKey = monkey_data_generator.generate_monKey(address)
if monKey.status is not 'Citizen':
return "API data on vanity monKeys does not exist"
return jsonify(monKey.serialize())
app = Flask(__name__)
app.register_blueprint(api_bp, url_prefix='/api')
大多数代码都是无关的。事实是我何时进入
api.website.com?address=xxx
或者当我进入时
api.website.com/xxx
我应该把我的API作为JSON,但我不是。在localhost上它不会返回任何内容,也不显示我甚至插入到代码中的打印件,当然在Heroku上,当我使用前缀时它无法识别项目。
您为蓝图提供了一个URL前缀:
api_bp = Blueprint('api', __name__,
template_folder='templates',
url_prefix='/api')
再次与
app.register_blueprint(api_bp, url_prefix='/api')
这意味着您需要使用hostname/api/
来获取get_monkey_api()
视图函数,或者使用hostname/api/xxxx
来获取monkey_api()
视图函数。
如果要在站点根目录中找到路由,请删除URL前缀。如果您希望蓝图适用于单独的子域,请使用subdomain='api'
选项,而不是URL前缀。
请注意,要使子域工作,您需要配置SERVER_NAME
config option以便可以检测到子域。如果要在本地测试,请编辑/etc/hosts
文件以添加指向服务器的一些开发别名,然后将SERVER_NAME
设置为匹配。