first step

创建并运行一个最简单的fastapi应用

最简单的 FastAPI 文件可能像下面这样:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

将期复制到main.py文件中,运行实时服务器:

uvicorn main:app --reload

INFO:     Will watch for changes in these directories: ['D:\\MyCode\\TestProject\\fastApiProject']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [12540] using WatchFiles
INFO:     Started server process [20932]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

nvicorn main:app --reload命令含义如下:

  • main: main.py文件(一个python模块)
  • app: 在main.py文件中通过app=FastAPI()创建的对象,app名称可以是任意符合规则的命名
  • reload: 让服务器在更新代码后重新启动,仅在开发时使用该选项

INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) 显示fastapi应用在本机中提供的访问地址,通过该url即可访问应用

创建一个路径操作

这里的路径是指url中从第一个/起的后半部分
所以在url中https://example.com/items/foo路径会是:/items/foo

「路径」也通常被称为「端点」或「路由」。

在开发api时,路径是用来分离关注点和资源的主要手段

常见的HTTP请求方法
POST:创建数据
GET:读取数据。
PUT:更新数据。
DELETE:删除数据。
更少见的请求方法:
OPTIONS
HEAD
PATCH
TRACE
在HTTP协议中可以使用以上一种或多种方法与每个路径进行通信


定义一个路径操作装饰器

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

@app.get("/") 告诉 FastAPI 在它下方的函数负责处理如下访问请求:

  • 请求路径为/
  • 使用get操作

@something 语法在 Python 中被称为「装饰器」。
像一顶漂亮的装饰帽一样,将它放在一个函数的上方(我猜测这个术语的命名就是这么来的)。
装饰器接收位于其下方的函数并且用它完成一些工作。
在我们的例子中,这个装饰器告诉 FastAPI 位于其下方的函数对应着路径 / 加上 get 操作。
它是一个「路径操作装饰器」。

其他的操作类似:

  • @app.post()
  • @app.put()
  • @app.delete()
    以及更少见的:
  • @app.options()
  • @app.head()
  • @app.patch()
  • @app.trace()

定义路径操作函数

  • 路径:是 /。
  • 操作:是 get。
  • 函数:是位于「装饰器」下方的函数(位于 @app.get("/") 下方)。
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

这是一个 Python 函数。
每当 FastAPI 接收一个使用 GET 方法访问 URL「/」的请求时这个函数会被调用。
在这个例子中,它是一个 async 函数。也可以定义为常规函数而不使用async def

如果不知道两者区别可以查看并发 async / await

返回内容

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

可以返回一个dict、list、str、int一样的单个值
也可以返回Pydantic模型
还有需要其他将会自动转换为Json的对象和模型

以上内容均根据fastapi官方文档学习记录fastapi

posted @   PyAj  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示