Flask 写接口中文乱码踩坑记

Flask 写接口中文乱码踩坑记

在经历了与编码报错和乱码的斗智斗勇后,写下此记~

万恶的报错信息 :json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

出现此报错信息出现问题的地方可能在于以下两点:

  1. dict 和 json 不一样! 不一样!! 不一样!!!

    dict 是数据类型, json 是字符串
    在这里插入图片描述

  2. 调接口的时候没有写headers = {‘Content-type’:‘application/json’}

都怪自己太菜……

用request.json来获取数据的话,就不能传dict进去,json.dumps()一下

处理json时,要把请求头和响应头的Content-type设置为application/json

1、主函数

以账号检测为例,写个简单的验证用户信息的函数

LOG_INFO = {'张三':'1234','李四':'4567'}

def is_register(name, pwd):
    if name in LOG_INFO:
        if pwd == LOG_INFO[name]:
            return '登录成功'
        else:
            return '密码错误'
    else:
        return '账户不存在'

2、服务端

from flask import Flask, request, Response
import json
from main import is_register

app = Flask(__name__)

@app.route('/login', methods=['POST','GET'])
def user_info():
    user_name = request.json['name']
    user_password = request.json['pwd']
    result = is_register(user_name, user_password)
    response = Response(json.dumps({'返回结果':result}), mimetype='application/json')
    return response

if __name__ == '__main__':
    app.run(port=5000, debug=True)

3、客户端

import requests
import json
import time

user_info = {'name':'张三','pwd':'666'}
url = 'http://127.0.0.1:5000/login'
headers = {'Content-type':'application/json'}

result = requests.post(url, data=json.dumps(user_info), headers=headers)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章