当前位置: 首页 > news >正文

python-web开发神器:FastAPI详细使用(简单易用)

文章目录

一、简介

1、官方文档

FastAPI官网:https://fastapi.tiangolo.com/
官方文档地址:https://fastapi.tiangolo.com/learn/

官方文档的示例非常清晰明了,通过官方文档可以很容易的使用上手。

2、安装

# 安装默认的环境包
pip install "fastapi[standard]"
# 安装简单的环境包
pip install fastapi

3、运行部署

直接运行py文件是运行不了的,需要使用命令运行

# 以dev方式运行,修改代码会自动部署,但是不稳定
fastapi dev test1.py
# 用4个worker运行,默认生产部署,禁用自动部署
fastapi run --workers 4 main.py
# 指定端口
fastapi run --port 8080 main.py

默认http://127.0.0.1:8000
同时开启一个API文档:http://127.0.0.1:8000/docshttp://127.0.0.1:8000/redoc

二、使用

1、helloworld

from fastapi import FastAPIapp = FastAPI()
# 可以post、delete等
@app.get("/")
async def root():return {"message": "Hello World"}

2、path参数解析

from fastapi import FastAPI
from enum import Enumapp = FastAPI()# 要注意定义的先后顺序
@app.get("/items/test")
async def read_item():return {"item_id": 123}# 注意path匹配规则,不要重复,如果重复会匹配第一个
# 获取path参数,可以指定具体参数类型 read_item(item_id: int):
@app.get("/items/{item_id}")
async def read_item(item_id):return {"item_id": item_id}# 可以使用枚举类型,path参数只能指定这几种类型
class ColorName(str, Enum):red = "red"green = "green"yellow = "yellow"@app.get("/colors/{color_name}")
async def get_model(color_name: ColorName):return {"color": color_name}

3、查询参数解析

from fastapi import FastAPIapp = FastAPI()fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}]# http://127.0.0.1:8000/items/?skip=0&limit=10 
@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 10):return fake_items_db[skip : skip + limit]

4、获取body体

from fastapi import FastAPI
from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str | None = Noneprice: floattax: float | None = Noneapp = FastAPI()# post body体
@app.post("/items/")
async def create_item(item: Item):return item

【重磅推荐!免费简单内网穿透神器!支持linux+windows】

推荐内网穿透神器【cpolar】https://www.cpolar.com/
点击【免费注册】之后,输入自己的个人信息就可以注册一个账号啦!
本地web项目如何使用外网访问?教你轻松使用cpolar在windows搭建内网穿透
linux虚拟机部署的web项目如何使用外网访问?教你轻松使用cpolar在centos搭建内网穿透
linux虚拟机部署的MySQL如何使用外网访问?教你轻松使用cpolar在centos搭建内网穿透


http://www.mrgr.cn/news/65333.html

相关文章:

  • GitHub中搜索项目方法
  • MySQL中,GROUP BY 分组函数
  • ElasticSearch备考 -- Manage the index lifecycle (ILM)
  • 如何修改WordPress经典编辑器的默认高度?
  • 深度学习与时间序列预测的关系
  • Vue前端学习笔记03
  • 一个小程序如何对接多个收款账户?
  • c++基础12比较/逻辑运算符
  • Python元组和列表在“用户信息管理”项目中的应用
  • VulkanTutorial(12·recreation swap chain,Vertex buffers)
  • SQLserver 表拆分
  • 从 vue 源码看问题 — 如何理解 vue 响应式?
  • Pyqt5蓝牙链接心跳检测
  • LeetCode 每日一题,用 Go 实现两数之和的非暴力解法
  • UEFI学习笔记(十四):UEFI Driver Model概述
  • scala Map集合
  • 云原生+AI核心技术&最佳实践
  • A10,V100,T4,P100,P4 那一款机器的配置比较好
  • 计算机存储单元bit。不同编程语言类型差异。
  • 统信UOS系统应用开发
  • 软件测试的几个关键步骤,你需要知道!
  • 文献翻译如何一键完成?推荐2024年11款翻译软件
  • 【PS】- 选区练习
  • Kubernetes中的PersistentVolume卷
  • C++初阶教程——C++内存管理
  • 在Python中最小化预测函数的参数