小白学FastAPI 正式开写了!

简介: 小白学FastAPI 正式开写了!

大家好,我是Kuls。

本系列文章的目的就是能够通俗易懂的讲述FastAPI这个框架,让每个人学习这门框架都没有什么门槛。

这个系列想了很久到底用什么形式来呈现,期间也发了投票给各位读者。

大家投出来最后的结果是,视频+图文的形式。

所以,这个系列我将会通过视频+图文的形式来呈现,当然视频的录制可能会晚一点点。

好了,接下来我们来细细说说fastapi这个框架。


敲门砖:写一个demo

如果让我用一个句话来描述fastapi,我会说这是Python里面最好的api框架!

不比go、node.js差!

以往我们使用Python来写后端,基本上使用的是Django和Flask。

但是现在不一样了,fastapi不仅仅高效率而且还很适合产品级的开发。

本系列最后会带着大家做一个完整的产品级项目,所以大家一定要记得星标公众号!

最直观的了解一个框架,就是先写一个简单的demo,然后跑起来。

在写demo之前,我们需要安装一下fastapi以及ASGI(ASGI是WSGI的升级版,支持异步调用)


pip install fastapi
pip install uvicorn


安装完毕之后,创建一个main.py ,然后粘贴我们下面的代码跑一下:


from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def index():
    return {"msg": "hello world"}
@app.get("/items/{item_id}")
def read_item(item_id: int, keyword: str):
    return {"item_id": item_id, "keyword": keyword}


如何运行?

如何运行呢?

直接 python main.py ?

不是的,上面我们已经安装了uvicorn,我们就直接用它来运行


$ uvicorn main:app --reload --port 8000
$ curl http://127.0.0.1:8000
$ curl http://127.0.0.1:8000/items/1?keyword=book


这里估计也得跟大家介绍一下上面几个命令行的意思。

首先第一个 uvicorn main:app --reload --port 8000

其中的main 指的是我们的文件名,app指的是我们在代码中FastAPI()这个类赋予的变量名,例如在上面app = FastAPI(),所以这里就是app。--reload是热部署的意思,热部署就是指我们改动代码服务器会自动更新代码文件然后重新运行。--port就不用多说了。

其次curl ,你可以理解为是一个请求web资源的命令行。

最后,运行完成,可以看到我们输出了一个json类型字符串


1.png


当然你也可以在浏览器中访问。


2.png


3.png


openAPI支持

在之前介绍fastapi的文章中也讲了,fastapi是一个符合OpenAPI 和 JSON Schema的框架。

所以fastapi也支持了API文档的自动生成,这一点对程序员来说真的是非常非常的舒服。

如何访问呢?

http://127.0.0.1:8000/docs

在后面加个docs就行了


4.png


http://127.0.0.1:8000/redoc

这样也能访问,只不过是换了一个api文档


5.png


可能很多读者不知道swagger是个啥,其实你可以理解为它是一个api管理和调试的工具箱。

我们编写的api接口都能够通过它来进行管理和调试。

例如下面,我可以直接调用之前写的/ 接口。


6.png


swagger的整体UI设计也是非常不错的!


新玩法的引入

有一些细心的朋友可能发现了上面我所写的代码,跟大家平时写的有一点点不同:


@app.get("/items/{item_id}")
def read_item(item_id: int, keyword: str):
    return {"item_id": item_id, "keyword": keyword}


主要是在这一行 def read_item(item_id: int, keyword: str):

因为fastapi是一个比较年轻的api框架,创立于2018年12月,距今不到两年。

所以也引入了Python3.6+中比较新的类型提示功能。其实就是使用了pydantic这个库实现的。

这里我引入官网的几张图来给大家直观的看看


7.png


8.png


我们可以通过声明变量的类型,编辑器和一些工具能给你提供更好的支持。

K哥认为引入这个的目的也是为了fastapi中的fast,让我们的开发更加快!

在官网中也说了高效编码:提高功能开发速度约 200% 至 300%。

关于fastapi的很多特性,我们都会从后面的文章中详细解答,例如它的安全和认证等等。

相关文章
|
3月前
|
开发框架 前端开发 JavaScript
Python 有哪些Web框架?比如Flask、Django等知识梳理
Python 有哪些Web框架?比如Flask、Django等知识梳理
289 1
|
网络架构 Python
FastApi-18-APIRouter
FastApi-18-APIRouter
331 0
|
2月前
|
开发框架 数据库 开发者
Web开发新境界:用Python玩转Django和Flask!
【6月更文挑战第12天】Python的Web开发框架Django和Flask各有千秋。Django是全能型框架,适合快速开发大型应用,提供ORM、模板引擎、URL路由和后台管理等全面功能。Flask则轻量级且灵活,适用于小型到中型应用,以其简单易用、高度可扩展和灵活路由著称。两者结合使用,能应对各种Web开发需求。
53 5
|
1月前
|
SQL API 数据库
为什么聪明人都选择Django/Flask?看完这篇,你也会有答案!
【7月更文挑战第14天】Django与Flask,Python Web开发的双子星。Django以其内置的ORM、模板引擎和快速项目搭建闻名,适合大规模应用。Flask则以其轻量级、灵活性和丰富的扩展生态著称,适用于原型开发和高度定制。两者各有千秋,满足不同开发需求。选择适合你的框架,踏上Web开发的精彩旅程吧!**
44 0
|
1月前
|
安全 API 数据库
Django/Flask不只是框架,它们是你Web开发路上的超级英雄!
【7月更文挑战第14天】Django与Flask,Python Web开发的双雄。Django提供全面功能,如ORM、模板引擎,适合大型项目;Flask轻量灵活,适用于快速迭代的定制化应用。Django示例展示ORM简化数据库操作,Flask示例演示构建RESTful API的便捷。两者各有所长,为开发者创造无限可能。**
21 0
|
3月前
|
安全 API Python
FastAPI入门指南
FastAPI是基于Python类型提示的高性能Web框架,用于构建现代API。它提供高性能、直观的编码体验,内置自动文档生成(支持OpenAPI)、数据验证和安全特性。安装FastAPI使用`pip install fastapi`,可选`uvicorn`作为服务器。简单示例展示如何定义路由和处理函数。通过Pydantic进行数据验证,`Depends`处理依赖。使用`uvicorn main:app --reload`启动应用。FastAPI简化API开发,适合高效构建API应用。5月更文挑战第21天
103 1
|
11月前
|
API Python
Python Web框架:Django、Flask和FastAPI巅峰对决
Python Web框架:Django、Flask和FastAPI巅峰对决
5383 0
|
JSON IDE 安全
FastAPI 是什么?快速上手指南
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建基于 Python 的 API。它是一个开源项目,基于 Starlette 和 Pydantic 库构建而成,提供了强大的功能和高效的性能。
FastAPI 是什么?快速上手指南
|
12月前
|
JSON JavaScript API
fastapi基础篇
fastapi基础篇
172 0
|
存储 前端开发 关系型数据库
Flask 与 Django 先学哪个呢
Flask 与 Django 先学哪个呢