暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python 之构建REST API

啊皮 2021-09-24
1004

Python 之构建REST API

    上几次和大家分享过就是可以用IBM i 的IWS server去创建Web server后去部署构建REST API service,这个是用AS400 RPG的语言去做的,之后小编在想是不是也有Java 和Python语言也是可以构建,然后一查发现真的有很多,Java的更是五花八门,最新的主流是Spring Boot后续如果有时间做一个Java Spring Boot 的方式给大家展示.Python主流是两个架构,一个FASTAPI, 一个是 Flask. 这次主要用FASTAPI 做一个抛转引玉的作用,最后多嘴下这些轻量级的架构是可以在Docker 里面部署运用的,也为以后的微服务API 做铺垫.





01

REST API




REST API是啥:

REST是Representational State Transfer(表现层状态转移)的缩写,它是由罗伊·菲尔丁(Roy Fielding)提出的,是用来描述创建HTTP API的标准方法的,他发现这四种常用的行为(查看(view),创建(create),编辑(edit)和删除(delete))都可以直接映射到HTTP 中已实现的GET,POST,PUT和DELETE方法。

从我们IT 的角度,就要知道它就是通过HTTPS 请求通过GET,Post,Put,Delete 方法做到增删改查了。

下面开始部署环境搞起:




02

配置Python环境 




这个是只要下载PyCharm 和配置对应的python 的环境,如果没有对应的FAST API,可以在PyCharm 的Terminal 里面安装.
pip install fastapi

pip install uvicorn[standard]







03

代码for Rest API 

    import uvicorn
    from fastapi import FastAPI
    import requests
    import json
    from fake_useragent import UserAgent
    import warnings
    from flask_cors import cross_origin
    from fastapi.middleware.cors import CORSMiddleware
    from pydantic import BaseModel
    from fastapi import FastAPI, Header


    from typing import Optional


    import uvicorn
    warnings.simplefilter('ignore', DeprecationWarning)


    #定义request body
    class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None


    class User(BaseModel):
    username: str
    full_name: str = None


    app = FastAPI()


    # Get 方法之带Path Parm
    @app.get('/nihao/{file_path:path}')
    async def read_file(file_path: str):
    result = {'code': 200, 'message': file_path}
    return result


    # Get 方法之 带Header parm
    @app.get("/items/1")
    async def read_items(*, abc: str = Header("Hlao l"), hello: str = Header("niha1o"), user_agent: str = Header(None)):
    return {"abc":abc+hello+ user_agent}


    # Get 方法之 Query parm
    @app.get("/items/")
    async def read_items(*,a: str = "wo de"):
    return {"Query Parm": a}


    # Post 方法之带 多个header + Request Body
    @app.post("/items/121")
    async def update_item(*,
    abc: str = Header("Hlao l"), hello: str = Header("niha1o"), user_agent: str = Header(None),
    item: Item, user: User):
    results = {"item": item, "user": user,"Hello":hello}
    return results


    #主方法来执行,前面都是定义对应的方法
    if __name__ == '__main__':
    uvicorn.run(app=app,
    host="localhost",
    port=80,
                    workers=1)
                    
    # 最后保存成FASTAPI.py 文件
    复制

    执行python文件:

      python FASTAPI.py
      后台log:
      C:\Users\MAIBENBEN\AppData\Local\Programs\Python\Python39\python.exe E:/Program/python_project/FASTAPI.py
      INFO: Started server process [2724]
      INFO: Waiting for application startup.
      INFO: Application startup complete.
      INFO: Uvicorn running on http://localhost:80 (Press CTRL+C to quit)
      复制


      通过Postman效果展示:

      Get 方法之 Path Parm


      Get 方法之 Header parm


      Get 方法之 Query parm

      Post 方法之多个header + Request Body


      如果大家有兴趣,对应的API的 Postman配置去小编的GitHUB上下载:https://github.com/SaidyWin/SaidyWin.github.io


      点一下右下角“在看”,让我们做的更好


      文章转载自啊皮,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论