You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular调用Flask接口获取字符串失败,请求排查

问题排查与解决方案

你的核心问题是Angular的HttpClient默认期望JSON格式响应,但Flask返回的纯字符串响应(Content-Type为text/html)无法被正确解析,导致res为undefined,尽管Flask日志显示请求成功(200状态码)。以下是两种直接有效的解决方法:

方法1:修改Flask返回JSON格式响应

让Flask返回标准JSON格式,这样Angular HttpClient可以自动解析:

from flask import Flask, jsonify

app = Flask(__name__)
@app.route('/')
def fetch_acceleration_data():
    return jsonify("hallo")  # 使用jsonify返回JSON格式

修改后Flask会自动设置响应头Content-Type: application/json,Angular就能正常获取到返回值。

方法2:在Angular请求中指定响应类型为文本

如果想保持Flask返回纯字符串,需要在Angular的get请求里明确指定responseType: 'text':

修改testService中的getAcc方法:

getAcc(): Observable<string> {
  return this.http.get(environment.apiURL, { responseType: 'text' });
}

组件订阅部分可同步调整类型(可选,让代码更规范):

this.accListSubs = this.accAPI
  .getAcc().subscribe((res: string) => {
    this.accList = res;
  });

额外检查项

  • CORS跨域问题:开发环境下Angular(默认4200端口)和Flask(5000端口)属于跨域,建议给Flask添加CORS支持避免潜在问题:
    from flask_cors import CORS
    app = Flask(__name__)
    CORS(app)  # 允许所有跨域请求,生产环境可配置具体域名
    
    安装依赖:pip install flask-cors
  • 环境配置确认:确保Angular运行时使用的环境配置文件(如开发模式用environment.ts,生产模式用environment.prod.ts)中apiURL正确指向http://127.0.0.1:5000。

内容的提问来源于stack exchange,提问作者D Cro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:35:40