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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值