首页 > 编程语言 >【Python】FastAPI 使用python3.6+构建API的Web框架

【Python】FastAPI 使用python3.6+构建API的Web框架

时间:2023-10-12 17:37:38浏览次数:42  
标签:__ Web name Python fastapi app FastAPI import

现代、快速(高性能)的 Web 框架,用于构建基于 Python 的 API;基于 Starlette 和 Pydantic 库构建而成

官网:https://fastapi.tiangolo.com/

 

1、安装

# 对于生产环境,还需要一个ASGI服务器,如Uvicorn或Hypercorn 
# > pip install "uvicorn[standard]" pip install fastapi
pip install uvicorn
pip install python-multipart

 

多种模板引擎

pip install  jinja2

 

2、创建 FastAPI 应用并运行 

方法1: 命令行启动fastapi

  IDE 编辑器中创建一个新的 Python 文件  [fastapi_main.py]

# -*- coding: UTF-8 -*-
from fastapi import FastAPI


app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

 

  在命令行中运行以下命令启动 FastAPI 应用

# 语法: uvicorn python文件名:FastAPI对象名 --reload
uvicorn fastapi_main:app --reload

 执行结果:

    

 

 FastAPI 将在本地启动一个服务器,并监听默认端口(8000)[http://127.0.0.1:8000/]

    

 

方法2:python直接运行

# -*- coding: UTF-8 -*-
import uvicorn
from fastapi import FastAPI


app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World~~"}


if __name__ == "__main__":
    uvicorn.run(app, host="127.0.0.1", port=8900)

 

 执行结果:

  

 

3、返回html页面 

# -*- coding: UTF-8 -*-
import uvicorn
from fastapi import FastAPI
from fastapi.responses import HTMLResponse


app = FastAPI()


@app.get("/index", response_class=HTMLResponse)
def read_root():
    html_file = open("../templates/html/index.html", 'r').read()
    return html_file


if __name__ == "__main__":
    uvicorn.run(app, host="127.0.0.1", port=8900)

 

 执行结果

    

    

4、GET、POST参数获取

# -*- coding: UTF-8 -*-
import uvicorn
from fastapi import Body
from fastapi import Query
from fastapi import FastAPI
from fastapi.responses import HTMLResponse


app = FastAPI()


# 路径参数:http://127.0.0.1:8900/index
@app.get("/index", response_class=HTMLResponse)
async def read_root():
    html_file = open("../templates/html/index.html", 'r').read()
    return html_file


# 路径参数:http://127.0.0.1:8900/name=zhangsan/age=12
@app.get("/name={n}/age={ag}")
async def server1(n, ag):
    return {
        "name": n,
        "age": ag,
    }


# get参数:http://127.0.0.1:8900/get/?name=lisi&age=23
@app.get("/get/")
async def server2(name=Query(None), age=Query(None)):
    return {
        "name": name,
        "age": age,
    }


# post参数:http://127.0.0.1:8900/post/
# post时body里设置:{"name":"wangerma","age":18}
@app.post("/post/")
async def server3(name=Body(None), age=Body(None)):
    return {
        "name": name,
        "age": age,
    }


if __name__ == "__main__":
    uvicorn.run(app, host="127.0.0.1", port=8900)

 

执行结果:

index 

   

路径参数获取

   

get参数获取 

   

 post 参数获取

   

 

 

 

  

标签:__,Web,name,Python,fastapi,app,FastAPI,import
From: https://www.cnblogs.com/phoenixy/p/17695997.html

相关文章

  • python+playwright 学习-61 Playwright 和 Selenium 的区别是什么?
    前言最近有不少同学问到Playwright和Selenium的区别是什么?有同学可能之前学过selenium了,再学一个playwright感觉有些多余,可能之前有项目已经是selenium写的了,换成playwright需要时间成本,并且可能有未知风险。也有同学之前可能没学过selenium,现在正准备入手一个web......
  • Python - 深拷贝一个带有指向自身引用的列表,会报错么?紧接着用==比较,会报错么?
    问题描述深拷贝一个带有指向自身引用的列表:列表x中有指向自身的引用,因此x是一个无限嵌套的列表。importcopyx=[1]x.append(x)>>x[1,[...]]y=copy.deepcopy(x)>>y[1,[...]] 深拷贝不报错但是我们发现深度拷贝x到y后,程序并没有出现stackoverf......
  • 动物识别系统python+Django网页界面+TensorFlow算法模型+数据集训练
    一、简介动物识别系统。基于Python+TensorFlow+Django网页框架+ResNet50算法模型实现实现步骤如下:收集多种动物的图片数据集,并整理归类然后使用TensorFlow搭建ResNet50算法模型网络对数据集进行多次迭代训练最后得到一个精度较高的H5模型文件基于训练好的模型,使用Django开......
  • Python 列表详解:从基础到进阶
    Python是一种广泛使用的高级编程语言,它的设计强调代码的可读性和简洁的语法。Python支持多种编程范式,包括过程、面向对象和函数式编程。在Python中,列表是一种非常重要的数据类型,它可以包含各种类型的元素,如数字、字符串和其他列表。本文将详细介绍Python列表的基础和进阶用法。【基......
  • python beautifulsoup
    beautifulsoup1.安装pipinstallbeautifulsoup4如果这个安装不了,就手动下载安装:下载地址:https://www.crummy.com/software/BeautifulSoup/bs4/download/4.5/解压后执行pythonsetup.pyinstall拷贝python安装目录下的C:\ProgramFiles\python\Tools\scripts\2to3.py文......
  • 【webapp】Servlet的生命周期
    Servlet的生命周期可以分为以下几个阶段:加载和实例化:当Servlet容器启动或检测到需要使用Servlet时,会加载Servlet的类文件并创建Servlet的实例。这通常发生在第一次请求到达Servlet或在容器启动时。初始化:在Servlet实例化后,容器会调用Servlet的init()方法来进行初始化。在初......
  • python_批量处理excel文件
    情况pipinstallopenpyxlpipinstallxlrd数据Excel文件的格式为xls和xlsx,pandas读取excel文件需要安装依赖库xlrd和openpyxl。!注意:当xlrd>=2.0时,只支持xls格式,不再支持xlsx。数据代码importpandasaspdimportosimportjsonif__name__=="__main__":e......
  • 作为 Web 开发人员我踩过哪些技术的坑
    回想当初,大约2015年的时候,我开始学习Web开发,在这期间内我浪费了大量时间来学习网上的文章和教程中提到的各种技术。在这个技术、库和框架层出不穷的行业中,高效学习是关键。因此,无论你是Web开发新手,还有已有一些经验的老人,都可以看看本文中列出的技术,这些都是我从未在工作中实......
  • 使用python来对字符编码序列进行互转
    排查字符集问题时,有的时候发生乱码不知道如何生成的字符,此时就需要通过字节序列来判断该字符是什么。已知utf8字节序列时,转换为unicode或者gb18030字节序列:>>>a=b'\xef\xbc\xa1'#此时a是一个bytes对象>>>b=a.decode("utf8")#此时b是一个str对象,内部是unicode的编码字......
  • 【Python&语义分割】Segment Anything(SAM)模型全局语义分割代码+掩膜保存(二)
    ​ 我上篇博文分享了SegmentAnything(SAM)模型的基本操作,这篇给大家分享下官方的整张图片的语义分割代码(全局),同时我还修改了一部分支持掩膜和叠加影像的保存。1SegmentAnything介绍1.1概况        MetaAI公司的SegmentAnything模型是一项革命性的技术,该模型能......