curl post json

错误类型

[POST]>400 Bad Request: The browser (or proxy) sent a request that this server could not understand.

400 (错误请求) 服务器不理解请求的语法。

使用场景flask

后台报400错误。400错误表示 由于语法格式有误,服务器无法理解此请求。
但后台的接口确实可以进行post请求。之后发现原因是当flask的request.form无法获取到对应的参数时,就会报400错误。
使用post请求时, 若是参数为json数据, request。

1. 表单最好不要接收json数据,想用表单接收可以采取 json 字符串的格式

-F json_file='{"title":"comewords","content":"articleContent"}'

这种方式直接json.loads即可得到字典格式信息

-F json_file=@/home/fanyuqing/response.json

这种方式需要转码

json_f = request.files.get("json_file")
json_str = json_f.stream.read().decode("utf8")
json_dic = json.loads(json_str)
 

2. 如果要用get_json()方法获取json文件,方式如下:

重点是要用 -H 参数来申明请求的 header

curl localhost:9999/api/art -X POST -H "Content-Type:application/json" -d '{"title":"comewords","content":"articleContent"}'

或者 curl localhost:9999/api/art -X POST -H "Content-Type:application/json" -d @re.json

json_dic =  request.get_json()
 

Flask 中接收与发送表单方式

from flask import Flask,render_template,request

@app.route('/login',methods=['GET','POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        print username,password
    return render_template('login.html',method=request.method)

Flask 中接收与发送json 方式详解

(转)https://blog.csdn.net/gymaisyl/article/details/86629874

1、利用flask的request.form.get()方法接收

from flask import Flask
from flask import jsonify
from flask import request
import json
 
@app.route("/login", methods=['POST'])
def login():
	 data_ = request.form.get('data')
	 data = json.loads(data)
	 username = data['username']
	 password = data['password']

	 return jsonify({"login": Login.login(username, password)})  # 返回布尔值

2、 利用flask的request.get_data()方法接收

from flask import Flask
from flask import jsonify
from flask import request
import json

@app.route("/flask/login", methods=['POST'])
def login():
 data = request.get_data()
 data = json.loads(data)
 username = data['username']
 password = data['password']

 return jsonify({"login": Login.login(username, password)}) # 返回布尔值

3、利用flask的request.get_json()方法接收

from flask import Flask
from flask import jsonify
from flask import request


@app.route("/flask/login", methods=['POST'])
def login():
 data = request.get_json()
 username = data['username']
 password = data['password']
 
 return jsonify({"login": Login.login(username, password)}) # 返回布尔值

你可能感兴趣的:(json,flask,python)