<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
如果要將我們寫好的Python程式碼生成API介面時,我們需要藉助Flask框架
pip install Flask
(1)新建python檔案 app.py(注意建立的Python檔名不能為flask.py,這會與Flask 本身發生衝突)
(2)在新建的檔案裡寫下如下內容:
#app.py from flask import Flask app = Flask(__name__) @app.route('/test',methos=['post']) def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run(debug=True)
首先我們匯入了 Flask 類,接著我們建立一個該類的範例。第一個引數是應用模組或者包的名稱。
如果你使用 一個單一模組(就像本例),那麼應當使用 name ,因為名稱會根據這個 模組是按應用方式使用還是作為一個模組匯入而發生變化(可能是 ‘main’ , 也可能是實際匯入的名稱)。
這個引數是必需的,這樣 Flask 才能知道在哪裡可以 找到模板和靜態檔案等東西。然後我們使用 route() 裝飾器來告訴 Flask 觸發函數的 URL 。函數名稱被用於生成相關聯的 URL 。函數最後返回需要在使用者瀏覽器中顯示的資訊。
(1)在終端裡匯出 FLASK_APP 環境變數:
$ export FLASK_APP=app.py
(2)執行該程式
$ flask run 1. Running on http://127.0.0.1:5000/
使用過Postman(一個介面測試工具)進行測試:
這將會得到返回結果“Hello, World!”
至此,我們完成了一個簡單的將Python程式碼生成API介面的範例!
更多內容請參考Flask官方檔案:
1. 匯入:import flask,json
2. 範例化:api = flask.Flask(name)
3. 定義介面存取路徑及存取方式:@api.route(’/index’,methods=[‘get/post/PUT/DELETE’])
4. 定義函數,注意需與路徑的名稱一致,設定返回型別並支援中文:def index(): return json.dumps(ren,ensure_ascii=False)
5. 三種格式入參存取介面:
6. 啟動服務:api.run(port=8888,debug=True,host=‘127.0.0.1’),開啟服務之後,就可以通過ip+埠+路徑+入參存取介面
#!/usr/bin/python3 # encoding:utf-8 import flask,json # 範例化api,把當前這個python檔案當作一個服務,__name__代表當前這個python檔案 api = flask.Flask(__name__) # 'index'是介面路徑,methods不寫,預設get請求 @api.route('/index',methods=['get']) # get方式存取 def index(): ren = {'msg':'成功存取首頁','msg_code':200} #json.dumps 序列化時對中文預設使用的ascii編碼.想輸出中文需要指定ensure_ascii=False return json.dumps(ren,ensure_ascii=False) #post入參存取方式一:url格式引數 @api.route('/article',methods=['post']) def article(): #url格式引數?id=12589&name='lishi' id = flask.request.args.get('id') if id: if id == '12589': ren = {'msg':'成功存取文章','msg_code':200} else: ren = {'msg':'找不到文章','msg_code':400} else: ren = {'msg':'請輸入文章id引數','msg_code':-1} return json.dumps(ren,ensure_ascii=False) #post入參存取方式二:from-data(k-v)格式引數 @api.route('/login',methods=['post']) def login(): #from-data格式引數 usrname = flask.request.values.get('usrname') pwd = flask.request.values.get('pwd') if usrname and pwd: if usrname =='test' and pwd =='123456': ren = {'msg':'登入成功','msg_code':200} else: ren = {'msg':'使用者名稱或密碼錯誤','msg_code':-1} else: ren = {'msg':'使用者名稱或密碼為空','msg_code':1001} return json.dumps(ren,ensure_ascii=False) #post入參存取方式二:josn格式引數 @api.route('/loginjosn',methods=['post']) def loginjosn(): #from-data格式引數 usrname = flask.request.json.get('usrname') pwd = flask.request.json.get('pwd') if usrname and pwd: if usrname =='test' and pwd =='123456': ren = {'msg':'登入成功','msg_code':200} else: ren = {'msg':'使用者名稱或密碼錯誤','msg_code':-1} else: ren = {'msg':'使用者名稱或密碼為空','msg_code':1001} return json.dumps(ren,ensure_ascii=False) if __name__ == '__main__': api.run(port=8888,debug=True,host='127.0.0.1') # 啟動服務 # debug=True,改了程式碼後,不用重啟,它會自動重啟 # 'host='127.0.0.1'別IP存取地址
執行結果:
* Serving Flask app 'monitor' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 991-833-116
* Running on http://127.0.0.1:8888/ (Press CTRL+C to quit)
127.0.0.1 - - [16/Jan/2022 14:05:53] "POST /login?usrname=test&pwd=123456 HTTP/1.1" 200 -
127.0.0.1 - - [16/Jan/2022 14:08:34] "GET /index HTTP/1.1" 200 -
使用postman測試介面是否可行
如:
url:127.0.0.1:8888/login
引數:usrname=test;pwd=123456
flask.request.form.get("key", type=str, default=None) 獲取表單資料, flask.request.args.get("key") 獲取get請求引數, flask.request.values.get("key") 獲取所有引數。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45