我正在尝试为Web应用程序的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
我应该以JSON的形式获取我的API,但事实并非如此。在本地主机上,它不返回任何内容,也不显示我什至在代码中插入的打印内容,当然,在Heroku中,当我使用前缀时,它无法识别项目。
答案 0 :(得分:0)
您为蓝图指定了 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
设置为匹配。