Python开发框架FastAPI系列(1. 初体验)

本文为系列文章Python开发框架FastAPI系列的第一部分。

缘起

其实Python的Web开发框架已经有很多了,包括老将Django和后起之秀Flask都做得很好,各有各的特色。那么为什么FastAPI作为一个后来者,短时间内就人气飙升呢?我也是看到很多招聘描述上提到了这个框架,产生了兴趣想去学习这个框架的意向。

根据官网的介绍,我们可以了解FastAPI的基本特点:

FastAPI framework, high performance, easy to learn, fast to code, ready for production

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints.

  • 高性能
  • 容易学习
  • 编码迅速
  • 生产环境可用

在这个系列文章中,我们逐步来展开讨论这些特点,看看官方介(chui)绍 (xu)的是不是很符合事实。

创世纪

安装很简单(感谢美丽善良的pip)

$ pip install fastapi

然后按照惯例,先上前菜hello world。

from typing import Union

from fastapi import FastAPI

app = FastAPI()


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


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

如果小伙伴们有过其他Web开发框架例如Flask, NodeJS Express的开发经验,阅读这个代码应该没有任何问题。注意因为FastAPI是一个现代的框架,用了包括Type Hints在内的一些Python语言特性。对Type Hints不熟悉的同学推荐参考本人拙作Python中的typings-CSDN博客

上面代码核心的部分就是导入fastapi包,并且实例化app对象。

from fastapi import FastAPI

app = FastAPI()

然后通过Python注解来标注路由规则,例如

@app.get("/items/{item_id}") # 路由规则
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

函数read_item则是一个控制器(也就是MVC中的Controller),它实现了具体的业务逻辑,并且返回了操作结果的恰当表示,这里返回的格式为JSON。

如何运行

将上面的代码保存为main.py,然后执行

fastapi dev main.py

就可以运行起来了。是不是很简单?

然后可以打开浏览器或者使用Postman,curl之类的兵器来测试这个应用,这里不再赘述了。

亮点:自动生成交互式文档

从FastAPI的名字来看,大家也能猜测到它的一个出发点是快速开发Web API的。而目前占据Web API统治地位的依然是RESTful API。既然有API,那么文档不可少。写文档难,维护文档更难。因为文档难搞,又没有成就感,所以很多同学都不乐意写文档,造成了大多数项目文档缺失和文档质量低下等问题。但是FastAPI的一个特点,就是能够自动生成交互式的文档。这个特性真的是亮瞎了我的狗眼。我还清晰记得以前做的JAVA服务上线后,痛苦地补写文档的日子。

在浏览器中打开地址http://127.0.0.1:8000/docs, 你会看到基于Swagger UI的可交互文档已经帮你生成好了。

这些文档基于open API Spec,依靠给力的Swagger UI,都是可以交互使用的。想象一下,通过FastAPI实现的服务上线了,文档也就同步完成了,对于开发者来说是不是很美妙?

另外FastAPI也集成了Redoc,这样可以给API的使用者提供更美观的参考文档。小伙伴们亲自试一试 http://127.0.0.1:8000/redoc

FastAPI的初体验就写到这里打住了,喜欢的朋友们请 tuple(点赞,收藏,关注)一下哦。你轻轻动动手指,就是为我添加巨大动力。炎炎夏日,也要动力澎湃。努力学习,做更好的自己~

  • 34
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruce Jia(上海)

熬夜码字换酒钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值