Flask+React求职信生成项目:415与500错误排查求助
问题排查与修复方案
一、415 Unsupported Media Type 错误修复
该错误核心原因是前端POST请求未正确设置请求头或发送的数据格式不符合要求,具体修正如下:
前端代码调整
在React发送POST请求时,必须添加Content-Type: application/json请求头,并将表单数据转为JSON字符串:
// 修正后的React请求示例 fetch('http://localhost:5000/generate_cover_letter', { method: 'POST', headers: { 'Content-Type': 'application/json', // 强制指定JSON格式 }, body: JSON.stringify(formData), // 将表单对象转为JSON字符串 }) .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error(err));
二、500 内部服务器错误(result未赋值)修复
该错误是因为后端代码中result变量存在未赋值就被引用的代码路径,比如API调用异常时未处理分支,修正如下:
Flask后端代码调整
提前初始化result变量,并添加异常捕获逻辑,确保所有分支下变量都有值:
@app.route('/generate_cover_letter', methods=['POST']) def generate_cover_letter(): result = "" # 初始化默认值,避免未赋值引用 try: data = request.get_json() assembler = CoverletterAssembler(data) result = assembler.generate() return jsonify({"cover_letter": result}) except Exception as e: result = f"生成失败:{str(e)}" return jsonify({"error": result}), 500
CoverletterAssembler类补充处理
确保generate()方法在API调用失败时也能返回值,避免抛出未处理异常:
class CoverletterAssembler: def __init__(self, data): self.data = data def generate(self): try: # OpenAI API调用逻辑 response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": self._build_prompt()}] ) return response.choices[0].message['content'].strip() except Exception as e: return f"OpenAI API调用失败:{str(e)}" def _build_prompt(self): # 确保提示词构建逻辑始终返回字符串 return f"根据以下信息生成求职信:{self.data}"
额外检查项
- 若前后端端口不同,需启用CORS避免跨域拦截:
from flask_cors import CORS app = Flask(__name__) CORS(app) - 验证前端发送的
formData键名与后端期望的结构一致,避免JSON解析失败
内容的提问来源于stack exchange,提问作者Yuri
相关产品推荐
相关产品推荐

