python - 我在烧瓶中得到 [OPTIONS] 方法而不是 [POST]
问题描述
我正在从 Angular 到烧瓶进行 API 调用。在烧瓶中,我得到的是 [OPTIONS] 而不是 [POST]。如果我两次调用相同的 API,那么烧瓶会将其识别为 [POST] 方法。
这是烧瓶代码:
import numpy as np
import pickle
from flask import Flask, request, redirect
from flask.json import jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS
app = Flask(__name__)
cors = CORS(app, resources={r"*": {"origins": "*"}})
app.secret_key = "Secret Key"
model = pickle.load(open('model.pkl', 'rb'))
#API Calls
@app.route('/',methods=["GET"])
def index():
if request.method == "GET":
return jsonify(data="Hello World")
@app.route('/login',methods=['POST'])
def login():
if request.method == 'POST':
data = request.get_json()
return jsonify(data),200
@app.route('/register',methods=["POST"])
def register():
if request.method == 'POST':
data = request.get_json()
email = data["email"]
username = data["displayName"]
password = data["password"]
res = {
"result" : "success"
}
return jsonify(res),200
if __name__ == "__main__":
app.run(debug=True)
这是 Angular 中的 API 服务:
export class ApiService {
constructor(private http: HttpClient) {}
getHeaders(method: string) {
const token = localStorage.getItem("token");
const headers: any = {};
if (method === "post") {
headers["Content-type"] = "application/json";
}
return {
headers: new HttpHeaders(headers),
};
}
get(url: string) {
const headers = this.getHeaders("get");
return this.http.get(`${environment.apiUrl}${url}`, headers).toPromise();
}
post(url: string, payload: Object) {
const headers = this.getHeaders("post");
return this.http
.post(`${environment.apiUrl}${url}`, payload, headers)
.toPromise();
}
}
这是我点击注册按钮时调用的方法:
constructor(private api: ApiService, private router: Router) {}
ngOnInit(): void {}
async register(email: string,password: string,passwordCheck: string, displayName: string)
{
const newUser = {
email,
password,
passwordCheck,
displayName,
};
try {
const result = await this.api.post("/register", newUser);
console.log(result)
this.router.navigate(["/login"]);
} catch (err) {
console.log(err);
}
}
烧瓶中的终端输出:
127.0.0.1 - - [17/Jun/2021 09:48:14] "OPTIONS /register HTTP/1.1" 200 -
127.0.0.1 - - [17/Jun/2021 09:48:19] "POST /register HTTP/1.1" 200 -
检查中的网络选项卡: 注册
谢谢。
解决方案
推荐阅读
- r - 来自维基百科的 R 程序没有绘图
- python - 如何在python中创建一个自动填写表格的程序?
- python - ImportError:无法从“neo4j.v1”(/usr/local/lib/python3.7/site-packages/neo4j/v1/__init__.py)导入名称“CypherError”
- excel - 用于将多个文本文件中的数据提取到 Excel 电子表格中的 Powershell 脚本
- javascript - 当输入填充 1 个整数时自动移动到下一个选项卡
- amazon-web-services - 使用图像参数更改触发 Cloudformation Blue/Green
- php - 如何使用 Yii2 框架在链接中添加标题属性?
- javascript - 功能组件未呈现
- sql - 在关键字后面的字符串中提取字符并在另一个关键字之前结束
- python - 如何在python中检查域是否有ssl证书?