<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1.安裝pip依賴
[root@bigdata001 ~]# [root@bigdata001 ~]# pip3 install flask [root@bigdata001 ~]# [root@bigdata001 ~]# pip3 install flask_restful [root@bigdata001 ~]#
2.執行程式如下:
#!/usr/bin/python3 from flask import Flask from flask_restful import Resource, Api, reqparse host = '0.0.0.0' port = 5600 app = Flask(__name__) api = Api(app) class HelloWorld(Resource): def __init__(self): self.parser = reqparse.RequestParser() self.parser.add_argument("key1", type = str) self.parser.add_argument("key2", type = str) def get(self): data = self.parser.parse_args() value1 = data.get("key1") value2 = data.get("key2") return {'hello':'world', value1:value2} api.add_resource(HelloWorld, '/query') if __name__ == '__main__': app.run(host = host, port = port, debug = True)
3.請求URL: http://192.168.23.21:5600/query?key1=fruit&key2=apple
4.檢視Web頁面返回結果如下:
{
"hello": "world",
"fruit": "apple"
}
1.安裝pip依賴
[root@bigdata001 ~]# [root@bigdata001 ~]# pip install fastapi [root@bigdata001 ~]# [root@bigdata001 ~]# pip install uvicorn [root@bigdata001 ~]# [root@bigdata001 ~]# pip3 install nacos-sdk-python [root@bigdata001 ~]#
2.router模組程式如下:
from typing import Optional from fastapi import APIRouter, Query, Path fastapi_router=APIRouter() @fastapi_router.get(path="/") async def read_root(): return {"Hello": "World"} @fastapi_router.get(path = "/items/{my_item_id}", summary='路徑測試', description='路徑測試', tags=['測試模組'], response_description='{"my_item_id": my_item_id, "q": q}') async def read_item(my_item_id: int=Path(None, description="我的item id"), q: Optional[str] = Query(None, description="查詢引數")): return {"my_item_id": my_item_id, "q": q}
3.app模組程式如下:
import nacos from fastapi import FastAPI import fastapi_router def register_server_to_nacos(): nacos_server_addresses = '192.168.8.246:8848' nacos_namespace = 'public' nacos_user = 'xxxxxx' nacos_password = '123456' nacos_cluster_name = 'DEFAULT' nacos_group_name = 'DEFAULT_GROUP' nacos_project_service_name = 'data-quality-system' nacos_project_service_ip = '192.168.8.111' nacos_project_service_port = 6060 client = nacos.NacosClient(nacos_server_addresses, namespace=nacos_namespace, username=nacos_user, password=nacos_password) client.add_naming_instance(nacos_project_service_name, nacos_project_service_ip, nacos_project_service_port, cluster_name = nacos_cluster_name, weight = 1, metadata = None, enable = True, healthy = True, ephemeral = False, group_name = nacos_group_name) client.send_heartbeat(nacos_project_service_name, nacos_project_service_ip, nacos_project_service_port, cluster_name=nacos_cluster_name, weight=1, metadata=None, ephemeral=False, group_name=nacos_group_name) app = FastAPI(title='my_fastapi_docs',description='my_fastapi_docs') app.include_router(router=fastapi_router.fastapi_router) if __name__ == '__main__': register_server_to_nacos() import uvicorn uvicorn.run(app=app, host="0.0.0.0",port=8080, workers=1)
4.請求URL: http://192.168.43.50:8080/items/6?q=fastapi
5.檢視Web頁面返回結果如下:
{"my_item_id":6,"q":"fastapi"}
檢視fastapi docs路徑:http://192.168.43.50:8080/docs,結果如下:
檢視nacos頁面如下:
post程式碼片段如下:
from pydantic import BaseModel class Item(BaseModel): name: str description: Optional[str] = None price: float tax: Optional[float] = None @fastapi_router.post("/items/") async def create_item(item: Item): print(item.dict()) return item
執行requestTest.py
import requests url = "http://192.168.88.177:6060/items" data = { "name" : "bigdataboy", "price": 100, } response = requests.post(url=url,json=data) print(response.json())
post程式碼片段和requestTest.py的執行結果都是
{'name': 'bigdataboy', 'description': None, 'price': 100.0, 'tax': None}
get程式碼片段如下:
from typing import List @fastapi_router.get(path = "/items/get_list") async def get_list(id: int = Query(None), names: List[str] = Query(None) ): return {"id":id, "names":names}
存取http://192.168.88.177:8080/items/get_list?id=3&names=test1&names=test2,得到的結果如下:
get程式碼片段如下:
from starlette.responses import FileResponse @fastapi_router.get(path = "/items/downloadFile") async def downloadFile(): return FileResponse('C:\Users\dell\Desktop\test.txt', filename='test.txt')
存取http://192.168.88.177:8080/items/downloadFile,得到的結果如下:
使用瀏覽器F12檢視的Authorization如下:
以上URL的請求是公司的前端向後端請求資料,只是記錄下來,並自己並沒有做模擬測試
jwt的安裝
from starlette.responses import FileResponse @fastapi_router.get(path = "/items/downloadFile") async def downloadFile(): return FileResponse('C:\Users\dell\Desktop\test.txt', filename='test.txt')
demo如下:
from fastapi import Request import jwt @fastapi_router.get(path = "/items/get_authorization") async def get_authorization(request:Request, name: str): authorization = request.headers.get('authorization') token = authorization[7:] token_dict = jwt.decode(token, options={"verify_signature": False}) return token_dict
存取http://192.168.88.177:8080/items/get_authorization?name=zhang_san,得到的結果如下:
{
'key1': value1,
'key2': 'value2'
}
到此這篇關於Python進行Restful API開發範例的文章就介紹到這了,更多相關Python Restful API開發內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援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