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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章