Flask获取POST请求JSON参数并处理传入域名业务的实现方法
Flask 读取POST JSON请求参数实现方案
你当前的代码存在两处和需求不匹配的问题:
- 路由定义和你实际请求的地址不符:你的curl请求发往
/api/v1/domains,但现有代码的路由是带路径参数的/api/v1/domains/<domainarg>,该写法仅适用于参数放在URL路径里的场景(比如POST /api/v1/domains/vangus.com),和你把参数放在JSON请求体的场景不匹配。 - 你没有编写从POST请求体中解析JSON参数的逻辑。
完整修正代码
from flask import Flask, request, jsonify import json import subprocess import sys import re from datetime import datetime from pathlib import Path app = Flask(__name__) # 修正路由:去掉路径参数,和实际请求地址匹配 @app.route('/api/v1/domains', methods=['POST']) def add_domain(): # 解析请求体的JSON数据 request_data = request.get_json() # 增加参数校验,避免非法请求报错 if not request_data or 'domain_name' not in request_data: return jsonify({"error": "缺少必填参数domain_name"}), 400 # 读取domain_name参数保存到变量 domain_name = request_data['domain_name'].strip() # 这里写你后续处理nginx配置的逻辑 # ..... # 处理完成返回成功响应 return jsonify({"code": 0, "message": "域名添加成功", "domain": domain_name}), 200 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=True)
关键逻辑说明
request.get_json()是Flask提供的解析JSON请求体的方法,仅当请求头Content-Type为application/json时可以正常解析,否则会返回None- 增加参数校验逻辑可以避免非法请求导致服务报错,异常场景会返回400状态码和错误提示
- 提取到的
domain_name变量就是你POST请求里传递的域名值,可以直接用于后续的nginx操作逻辑
内容的提问来源于stack exchange,提问作者Stas Karpinsky
相关产品推荐
相关产品推荐

