python-Flask編寫一個簡單的網路介面(2)--詳解(超基礎)介面傳參
前言
上一篇中,我大概給你解釋了下它的自帶例子的大概結構同時還把它跑起來,大概看了下它的執行效果,今天我們就來更進一步。
如果你之前學過一些關於網路請求的知識的話,可以跳過下面一個步驟,如果沒有的話,你可以根據我下面的簡介,再配合自己的知識(或者自己百度),大概瞭解下,前後端分離大概是怎麼個分法。
網路請求基本簡介
只大概介紹,只要是為了方便後面flask寫介面用。有些比喻可能不大準確,但是就現在寫介面來說,這樣理解也差不多。
為什麼要前後端分離
為什麼要前後端分離嘞?一個專案直接部署在一起不好嘛,幹嘛分開?,,我當時第一時間聽說到這個概念之後,也是這樣的想法。可是後來我慢慢發現它的好處。。。。。
不知道你有沒有留意到,大部分的廠商在各種平臺都有對應的app。。即使有些平臺的差距特別大,但是他們的app中的資料在不同平臺上都是通用的(個別除外。。)。比如,qq有安卓版,有蘋果版,有windows版本,有mac版本,但是不管你從哪個平臺上登入,你的qq中的資料都沒有改變。甚至你不同平臺登入,它都會相互提示。
這些平臺之間有些差距十分巨大,甚至從構架上都是不同的。那麼,如果你的公司想到各個平臺上都有你的應用,你是不是都要把他們的程式碼都寫一遍,而且你還要留意不同平臺之間公用一個資料庫的相容性?
其實duck不必。你的這些app中,呼叫資料的這部分程式碼大多都是重複的。那麼你為什麼不直接寫只一個標準的,所有客戶端都可以直接呼叫的公共介面嘞?
那麼,這個公共的介面,就可以稱為後臺。(其實前後端分離的好處不止這麼點,但是這裡僅僅只是引入)
前後端分離的好處
不提遠的,就說一個最現實的。只要你寫好了一個後臺介面。你開發網頁版本的可以直接用它,開發小程式可以直接用它,甚至連硬體也可以直接用它。根本不需要任何改寫。
如微信小程式只要一個
wx.request(
url:"http://xxx.xxx.xx/xxx",
data:{
"xx":xx
},
sucess:function(res){}
);
就可以直接拿到你後臺處理好了的資料了。
如果你是python程式設計的話,直接:
s = requests.session()
res = s.get(url, params=data, headers=header_code)
如果你想用Ardunio的微控制器來傳送請求的話:
HTTPClient http;
http.begin(GetUrl);
httpCode = http.POST(payload);
當然,如果你想用網頁端請求也是一步到位:
const { data: res } = await this.$http.post('xxx', payload)
反正,,,總的來說,目前對於我們自己,前後端分離了,你就只用寫一個後臺,然後各種平臺的開發你都可以直接用這個介面,而不用每個都重新寫了。
怎麼測試自己的介面
我們大多時候,自己的介面寫好了之後,總會出現一些不盡人意的問題。所以我們可以自己呼叫下試試,來看看自己的介面有沒有什麼bug。
常用的API測試助手嘛,有啥子POST Man之類的,,,但是,emmmm,我因為電腦上安的東西有點多(從前端到後臺,從硬體到軟體,,,還有pytorch的包,,,c盤我是真心擔心它撐不住),反正就是懶得安。你要是感興趣可以自己安一個。。。我這裡直接用內網穿透,然後用別人的網頁版的除錯助手了。。
。
介面傳參
上面和大家說過了,既然是要和伺服器進行通訊,那麼引數的傳遞時必然的。否則就像別人和你說話的時候一樣。明明已經找到你了,卻啊吧啊吧的瞎比劃,,你根本不知道它讓你怎麼做。
所以接下來我們來簡單的傳個引數。
功能很簡單,就是你給這個介面發啥,它就收啥。
我們一步一步的來。首先,先從控制檯把受到的資料列印出來。
接收資料並處理
from flask import Flask,request # 下面要從request裡面獲取資料,所以要匯入
app = Flask(__name__)
@app.route('/')
def hello_world():
data = request.get_data() # 直接呼叫函式,並列印
print(data)
return 'Hello World!' # 這裡就不改了,待會的效果直接去控制檯看
if __name__ == '__main__':
app.run(debug=True, port=80)
執行起來
接下來我對著我本地的介面傳送GET請求,並且新增一個引數“my_test:1”
來看看控制檯列印內容
我傳送的請求已經拿到了,但是看見前面的那個“b”了沒?嘿嘿,你再傳送個字串試試?
看看列印
哦吼。。。看不懂了,沒錯。直接這樣獲取資料是不常用滴!
我們一般傳遞的時候是用的JSON資料格式傳的(沒聽過的可以自己百度下)JSON非常的好用,
這裡的頭部也要設定成JSON
這樣
我們設定傳送的格式為JSON,然後我們接收的時候把資料轉化成JSON就可以啦。
from flask import Flask,request
import json # 由於我們用到了Json,所以要匯入
app = Flask(__name__)
@app.route('/',methods=['POST'])
def hello_world():
data = request.get_data()
j_data = json.loads(data) # 把資料轉化成json資料
print(j_data)
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True, port=80)
然後執行叭,
嘿嘿,好了吧。其實還有各種方法都可以,只要你轉化的合理即可(就是傳送請求時的請求頭,和接收闡述之後的轉化對的上就ok了)
返回資料
其實返回資料的話,之前的return已經可以了,,,但是實際需求中,僅僅返回字串的話,肯定不夠用的,比如我要獲得天氣資料,你要一下子就返回天氣,氣溫,溼度等資訊。如果一個字串直接返回,那樣的話,我收到後還要處理提取,太麻煩了。。所以直接也返回JSON格式的資料就可以了。
from flask import Flask,request,jsonify # 用來把返回資料轉化成JSON的
import json
app = Flask(__name__)
@app.route('/',methods=['POST'])
def hello_world():
data = request.get_data()
j_data = json.loads(data)
print(j_data)
res_data = j_data['my_test']
msg = {
"you_data":res_data
}
return jsonify(msg)
if __name__ == '__main__':
app.run(debug=True, port=80)
這是API助手的:
這是串列埠列印的:
可以看到,,API助手的返回資料已經成JSON格式了。
總結
這一章大概的講了下flask怎麼接收引數和返回。當然,這只是其中的一種,還有各種各樣的方法。目前為止,學到的內容已經大概滿足初步的使用了。(可以寫些只用傳普通字元啊,啥子的介面了。比如,emmm,,,xxx倒數計時啥子的,我以前無聊的時候根據八字的演算法寫了個算八字的介面。。後來程式碼搞不見了,害。)當然,你要是會一些其它的庫,還有更多的騷操作。如,emmm,爬取別的網址的資訊,搞自己介面上?,,反正騷操作不少。。。可以自己多摸索下。
下回我給你介紹關於圖片處理。
相關文章
- python+flask 編寫一個簡單的登入介面例子PythonFlask
- python+flask編寫一個簡單的登入介面例子PythonFlask
- 一個基於Java的介面快速開發框架!無需編寫程式碼,透過UI介面編寫介面!Java框架UI
- 使用Node.js寫一個簡單的api介面Node.jsAPI
- 編寫一個介面壓測工具
- 手寫一個超簡單的VueVue
- Flutter系列:2.實現一個簡單的登入介面Flutter
- 介面測試之基於LoadRunner的一個簡單示例
- 一個簡單的介面測試框架 demo框架
- 一個簡單的開源DIRECTUI介面框架UI框架
- javascript編寫一個簡單的編譯器JavaScript編譯
- CSS樣式案例(2)-製作一個簡單的登入介面CSS
- BSN-DDC基礎網路詳解(一):基礎介紹
- BSN-DDC基礎網路詳解(五):接入DDC網路(2)
- springboot介面接參註解詳解Spring Boot
- Golang介面簡單瞭解Golang
- 編寫一個簡單的智慧合約
- 編寫一個簡單的babel外掛Babel
- 編寫一個簡單的JavaScript模板引擎JavaScript
- 編寫一個非常簡單的 JavaScript 編輯器JavaScript
- 一、介面測試基礎
- 高速介面:GT基礎(一)
- Express簡單起一個本地服務介面Express
- 【小白學PyTorch】1 搭建一個超簡單的網路PyTorch
- webpack介面環境切換的配置-超簡單Web
- 編寫一個簡單的flask的前後端互動的網頁(flask簡單知識的講解)Flask後端網頁
- 一個單層的基礎神經網路實現手寫數字識別神經網路
- 編寫註冊介面
- (一)Jmeter簡單介面測試JMeter
- 摘用的一個實現線上傳送簡訊介面功能
- java基礎-介面Java
- JavaSE基礎: 介面Java
- Python之介面自動化初級:開始一個簡單的介面測試Python
- 教你如何編寫第一個簡單的爬蟲爬蟲
- 用Java編寫一個最簡單的桌面程式Java
- ios 高效的寫好一個UI介面(一)iOSUI
- Swift 寫一個完整的介面(實戰)Swift
- Go 語言介面詳解(一)Go