[鱼刺-Python-2] 快速建立测试用API服务

快速建立API服务使用 flask,要先安装
先执行 python -m pip install flask
然後写个 app.py 档案
上代码! 如下:

from flask import Flask, request, jsonify
import time, random

app = Flask(__name__)

bookStoreList = [
    {"id": 1, "name": "PYTHON_DEV", "price": 100, "count":10},
    {"id": 2, "name": "JAVA_DEV", "price": 200, "count":20},
    {"id": 3, "name": "GOLANG_DEV", "price": 300, "count":30},
    {"id": 3, "name": "C#_DEV", "price": 400, "count":40}
]

def _find_next_id():
    return max(book["id"] for book in bookStoreList) + 1
    
def _find_book(name):
    
    result = list(filter(lambda data: data.get('name')==name, bookStoreList))
    if len(result) > 0 :
        return {'success':True,'bookinfo':result[0]}
    else :
        return {'success':False,'bookinfo':None}

@app.get("/bookstore/getbooks")
def get_books():
    return jsonify(bookStoreList)

@app.post("/bookstore/buybook")
def buy_book():
    if request.is_json:
        bookinfo = request.get_json()
        print('bookinfo: ', bookinfo)
        # 随机API耗费时间 1~10s
        time.sleep(random.randrange(1,10))
        return jsonify(_find_book(bookinfo["BookName"])), 201
    return {"error": "Request must be JSON"}, 415

@app.post("/bookstore/addbook")
def add_book():
    if request.is_json:
        newbookinfo = request.get_json()
        newbookinfo["id"] = _find_next_id()
        bookStoreList.append(newbookinfo)
        return newbookinfo, 201
    return {"error": "Request must be JSON"}, 415
    
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8321)

完成後直接执行 python app,便可以看到以下资讯
https://ithelp.ithome.com.tw/upload/images/20210905/20141414G5pxs4zav9.png

代表API服务已经成功启动,然後就可以开始做测试,
这边我自己启动的port是 8321,这个可自行调整
改 app.run(host="0.0.0.0", port=8321) 这个就行了
里面有几只API其中一支的 curl 如下

curl --location --request POST 'http://127.0.0.1:8321/bookstore/buybook' \
--header 'Content-Type: application/json' \
--data-raw '{
    "BookName":"PYTHON_DEV"
}'

另外为了给第一篇做测试,/bookstore/buybook 里面有加 随机API耗费时间,
大概就这样,Cheer !


<<:  Day 5 - 虚拟机配置&实体手机测试

>>:  前端工程师也能开发全端网页:挑战 30 天用 React 加上 Firebase 打造社群网站|Day5 注册登入页面

【Day02】Git 版本控制 - 浅谈版本控制

只要有写过程序,相信一定都有听过 GitHub 这个网站,不但可以在上面管理、分享自己的 code,...

Day 19: Security Hub 单一帐号/启用Org.後的布建

在布建Security Hub前必须注意的事项 因为Security Hub是一项汇集所有资安服务调...

活动图教程

活动图类似於业务工作流程图或简单的流程图,具有更丰富的语义。它描述了系统活动,或进行活动的人,以及这...

Day15 Hook-useRef

Hook的useRef函式用於function component有分两种方式做介绍, 请先在要使用...

[25] 用 python 刷 Leetcode: 155 min-stack

原始题目 Design a stack that supports push, pop, top, ...