注:本篇的代碼和語法基於Python3.5環境,下面將用到Python 的Flask框架
封裝接口主要講靜態接口(無參數傳入)、動態接口(有參數傳入,不同參數返回的信息不同)。針對動態接口有三種傳參方式:key_value、json串和拼接方式入參
- 一、封裝成無參數傳入的接口
from flask import Flask,jsonify,request data = {'huhy':{'age':24,'sex':'女'}, 'liuer':{'age':12,'sex':'男'} } app = Flask(__name__)#創建一個服務,賦值給APP @app.route('/get_user',methods=['post'])#指定接口訪問的路徑,支持什么請求方式get,post #講的是封裝成一種靜態的接口,無任何參數傳入 def get_user():#-----這里的函數名稱可以任意取 return jsonify(data)#把字典轉成json串返回 app.run(host='0.0.0.0',port=8802,debug=True) #這個host:windows就一個網卡,可以不寫,而liux有多個網卡,寫成0:0:0可以接受任意網卡信息, 通過訪問127.0.0.1:8802/get_user,可返回data信息 #debug:調試的時候,可以指定debug=true;如果是提供接口給他人使用的時候,debug要去掉
接口返回的截圖如下: - 二、有參數傳入的接口
1.通過key_value方式傳參
from flask import Flask,jsonify,request data = {'huhy':{'age':24,'sex':'女'}, 'liuer':{'age':12,'sex':'男'} } err = {'zz':404, 'yy':502 } app = Flask(__name__)#創建一個服務,賦值給APP @app.route('/get_user',methods=['post'])#指定接口訪問的路徑,支持什么請求方式get,post # key_values方式傳參 def get_user(): username = request.form.get('username')#獲取接口請求中form-data的username參數傳入的值 if username in data:#判斷請求傳入的參數是否在字典里 return jsonify(data[username]) #如果在的話,則返回data對應key的值轉成的json串信息 else: return jsonify(err[username]) #如果不在的話,返回err對應key的value轉成的json串信息 app.run(host='0.0.0.0',port=8802,debug=True) #這個host:windows就一個網卡,可以不寫,而liux有多個網卡,寫成0:0:0可以接受任意網卡信息 #通過訪問127.0.0.1:8802/get_user,form—data里輸入username參數,則可看到返回信息
接口返回的截圖如下:
2.通過json串方式傳參
from flask import Flask,jsonify,request data = {'huhy':{'age':24,'sex':'女'}, 'liuer':{'age':12,'sex':'男'} } err = {'zz':404, 'yy':502 } app = Flask(__name__)#創建一個服務,賦值給APP @app.route('/get_user',methods=['post'])#指定接口訪問的路徑,支持什么請求方式get,post #json方式傳參 def get_ss(): username = request.json.get('username1')#獲取帶json串請求的username參數傳入的值 if username in data: # 判斷請求傳入的參數是否在字典里 return jsonify(data[username]) #如果在的話,則返回data對應key的值轉成的json串信息 else: return jsonify(err[username]) #如果不在的話,返回err對應key的value轉成的json串信息 app.run(host='0.0.0.0',port=8802,debug=True) #這個host:windows就一個網卡,可以不寫,而liux有多個網卡,寫成0:0:0可以接受任意網卡信息 #通過訪問127.0.0.1:8802/get_user,form—data里輸入username參數,則可看到返回信息
接口返回的截圖如下:
3.請求鏈接直接拼接入參方式
from flask import Flask,jsonify,request data = {'huhy':{'age':24,'sex':'女'}, 'liuer':{'age':12,'sex':'男'} } err = {'zz':404, 'yy':502 } app = Flask(__name__)#創建一個服務,賦值給APP @app.route('/get_user',methods=['post'])#指定接口訪問的路徑,支持什么請求方式get,post #請求后直接拼接入參方式 def get_ss(): username = request.args.get('username')#使用request.args.get方式獲取拼接的入參數據 if username in data: # 判斷請求傳入的參數是否在字典里 return jsonify(data[username]) #如果在的話,則返回data對應key的值轉成的json串信息 else: return jsonify(err[username]) #如果不在的話,返回err對應key的value轉成的json串信息 app.run(host='0.0.0.0',port=8802,debug=True) #這個host:windows就一個網卡,可以不寫,而liux有多個網卡,寫成0:0:0可以接受任意網卡信息 #通過訪問127.0.0.1:8802/get_user,form—data里輸入username參數,則可看到返回信息
接口返回的截圖,如下:
4.request.values.get()獲取請求參數的方法,不僅支持獲取連接拼接的參數,而且還能獲取body form填入的參數 - 未完待續