我正在做一个有关Ionic的学校项目,所以我决定为我的最初需求创建一个基本的API。我正在使用Flask,因为它非常简单,但是当涉及到GET请求时,我遇到了麻烦(在设置完所有内容并托管在Heroku上之后)。 这是API代码(我现在使用的是模拟文件而不是数据库,这是问题的根源吗?):
const lookup = {
FELONY: 1,
MISDEMEANOR: 2,
...
}
sort(... => (lookup[ab] + lookup[aa]).localeCompare(...))
这是请求代码(顺便说一下,它是Angular)
import os
from flask import Flask, send_from_directory
from flask_cors import CORS, cross_origin
app = Flask(__name__)
CORS(app)
@app.route('/')
def hello():
return 'API do SIGNCLASS'
@app.route('/files/<path:file>')
@cross_origin()
def sendfile(file):
return send_from_directory('files', file)
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', port=port)
如您所见,我已经设置了flask_cors,但是效果不好,我还是得到了:
public getCourse(courseId): Observable<Level[]> {
const url = `${this.contentUrl}course${courseId}.json`;
return this.http.get<Level[]>(url)
.pipe(
catchError(this.handleError('Obter níveis', []))
);
}
编辑:我已经与邮递员检查过,在那里我可以找到:
Failed to load https://apiurlishere: No
'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:8100' is therefore not allowed access.
所以我真的迷路了。
答案 0 :(得分:0)
因此,我复制了大多数代码,并使用大写的“ METHODS”而不是@ app.route装饰器中的小写方法遇到了问题。
在烧瓶错误日志中,我看到了:
TypeError: __init__() got an unexpected keyword argument 'METHODS'
official docs在所有小写字母中都具有method关键字,因此我切换到小写字母,angular收到了http响应。
答案 1 :(得分:0)
编辑:好的,我应该在发布前对更多的东西进行测试 这适用于localhost,但不适用于Heroku。仍然迷路。
显然,正在发送响应,但没有标题。而且它不会显示在日志中。开始认为现在应该归咎于Heroku。
//////
哈哈,由于这个Solve Cross Origin Resource Sharing with Flask,我(不是真的)使它正常工作。因此,如果您通过Google到达这里,那就是好地方。
我的代码最终如下:
nameafile := 5; | psql.exe -h localhost -p 5432 -U postgres -d postgres
我觉得Postman有点误导。