FastAPI从入门到实战(3)——Hello World(安装与运行)
本文详细记录FastAPI本地的安装和运行,都很简单,主要记录验证一些特性。
安装FastAPI
安装就非常简单,只需要安装两个包就行:
- FastAPI
pip install fastapi
- uvicorn——用于加载和提供应用程序的服务器。
pip install uvicorn
创建项目
- 在pycharm 2022版里面可以直接创建FastAPI项目,不知道其他版本可不可以,直接创建就行;
如果没有的话也不要慌,创建一个空项目就行。 在main.py文件内粘贴如下代码就行: from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"}
- 运行项目 第一种就是pycharm创建的项目,直接运行就行
还有一种就是直接创建的,在终端输入运行命令uvicorn main:app --reload
即可
- 查看运行效果:http://127.0.0.1:8000/
输出JSON数据,就搭建成功了。
交互式API文档
打开http://127.0.0.1:8000/docs就能看到自动生成的交互式 API 文档(由 Swagger UI 提供):
可选的API文档
前往http://127.0.0.1:8000/redoc就能看到可选的自动生成文档 (由 ReDoc 提供):
源码解析
from fastapi import FastAPI
导入fastapi的包
app = FastAPI()
创建一个FastAPI实例 这里的变量 app 会是 FastAPI 类的一个「实例」。 这个实例将是创建你所有 API 的主要交互对象。 这个 app 同样在命令中被 uvicorn 所引用:
uvicorn main:app --reload
@app.get("/")
告诉 FastAPI 在它下方的函数负责处理如下访问请求:
- 路径为
/
- 使用
get
请求方法
@something 语法在 Python 中被称为「装饰器」,装饰器接收位于其下方的函数并且用它完成一些工作。 常见的路径操作装饰器:
@app.post("/")
@app.put("/")
@app.delete("/")
@app.get("/")
@app.options("/")
@app.head("/")
@app.patch("/")
@app.trace("/")
async def root():
return {"message": "Hello World"}
async def root():
return {"message": "Hello World"}
async
定义一个异步的函数,每次请求/
都会被调用,并返回{"message": "Hello World"}
配置项
主要是一些基本的配置项,比如两个API地址的访问地址,文档标题与简介等。这些就可以直接看源码:
class FastAPI(Starlette):
def __init__(
self,
*,
debug: bool = False,
routes: Optional[List[BaseRoute]] = None,
title: str = "FastAPI",
description: str = "",
version: str = "0.1.0",
openapi_url: Optional[str] = "/openapi.json",
openapi_tags: Optional[List[Dict[str, Any]]] = None,
servers: Optional[List[Dict[str, Union[str, Any]]]] = None,
dependencies: Optional[Sequence[Depends]] = None,
default_response_class: Type[Response] = Default(JSONResponse),
docs_url: Optional[str] = "/docs",
redoc_url: Optional[str] = "/redoc",
swagger_ui_oauth2_redirect_url: Optional[str] = "/docs/oauth2-redirect",
swagger_ui_init_oauth: Optional[Dict[str, Any]] = None,
middleware: Optional[Sequence[Middleware]] = None,
exception_handlers: Optional[
Dict[
Union[int, Type[Exception]],
Callable[[Request, Any], Coroutine[Any, Any, Response]],
]
] = None,
on_startup: Optional[Sequence[Callable[[], Any]]] = None,
on_shutdown: Optional[Sequence[Callable[[], Any]]] = None,
terms_of_service: Optional[str] = None,
contact: Optional[Dict[str, Union[str, Any]]] = None,
license_info: Optional[Dict[str, Union[str, Any]]] = None,
openapi_prefix: str = "",
root_path: str = "",
root_path_in_servers: bool = True,
responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None,
callbacks: Optional[List[BaseRoute]] = None,
deprecated: Optional[bool] = None,
include_in_schema: bool = True,
swagger_ui_parameters: Optional[Dict[str, Any]] = None,
generate_unique_id_function: Callable[[routing.APIRoute], str] = Default(
generate_unique_id
),
**extra: Any,
)
参数还是比较清晰的,比如是否开启debug模式、标题、简介、版本等等,简单配置如下:
app = FastAPI(
title='FastAPI Study',
description='FastAPI教程',
version='1.0.0',
docs_url='/docs',
redoc_url='/redocs',
)
效果图:
相关文章
- 【虚幻引擎】实现类LOL缓慢扣血血条
- 【Lua】协程
- 刷屏朋友圈的QQ小世界二次元生成器原理解密
- 每周云安全资讯-2022年第52周
- 最高法二审“拉菲庄园”商标侵权案,曾判赔7917万!
- 表达式求值
- WordCounter.icu - 一个简单的在线实时字数统计工具
- DNSPod十问王万龙:AIOps为什么还没成为主流?
- 如何不改一行代码,让Hippy启动速度提升50%?
- 手把手教你搭建Hexo博客
- 【UE4项目】类魂ARPG游戏实现
- 喜报 l 牛信云成功入选2022《全球化品牌成长手册--服务资源精选》
- 【力扣周赛第305场】全题题解
- UE4常用蓝图Actions
- sluaunreal插件使用样例
- 【ES三周年】Elasticsearch入门
- pthread_create 线程属性-多线程操作 pthread_create pthread_join
- c语言编程用什么软件-学习c语言需要什么软件_c语言编程软件有哪些
- 单周期CPU
- 杂七杂八的练习(1)