小白学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的很多特性,我们都会从后面的文章中详细解答,例如它的安全和认证等等。

相关文章
|
数据库
FastAPI的数据库操作终于整明白了!
FastAPI的数据库操作终于整明白了!
3538 0
FastAPI的数据库操作终于整明白了!
|
IDE API 开发工具
FastAPI快速搭建一个博客系统
FastAPI快速搭建一个博客系统
1022 0
FastAPI快速搭建一个博客系统
|
6月前
|
SQL 人工智能 搜索推荐
通义灵码 Rules 来了:个性化代码生成,对抗模型幻觉
通义灵码又上新外挂啦,Project Rules来了。当模型生成代码不精准,试下通义灵码 Rules,对抗模型幻觉,硬控 AI 根据你的代码风格和偏好生成代码和回复。
|
监控 应用服务中间件 网络安全
FastAPI部署大揭秘!如何从代码到云端,让你的Web应用华丽变身生产环境之星?
【8月更文挑战第31天】FastAPI是一款基于Python 3.6+异步特性的高性能Web框架,深受开发者喜爱。本文详细介绍了将FastAPI应用部署到生产环境的过程,包括准备应用、使用Uvicorn测试、配置Gunicorn和Nginx、设置反向代理及监控日志等关键步骤。通过这些步骤,确保应用安全高效地运行在生产环境中,实现高性能与高可扩展性。
1462 0
|
10月前
|
数据采集 自然语言处理 PyTorch
动手实践:使用Hugging Face Transformers库构建文本分类模型
【10月更文挑战第29天】作为一名自然语言处理(NLP)爱好者,我一直对如何利用最先进的技术解决实际问题充满兴趣。Hugging Face 的 Transformers 库无疑是目前最流行的 NLP 工具之一,它提供了大量的预训练模型和便捷的接口,使得构建和训练文本分类模型变得更加简单高效。本文将通过具体的实例教程,指导读者如何使用 Hugging Face 的 Transformers 库快速构建和训练一个文本分类模型,包括环境搭建、数据预处理、模型选择与训练等步骤。
581 0
|
11月前
|
JavaScript 前端开发 UED
video标签里面的路径怎么填
video标签里面的路径怎么填
237 0
|
11月前
|
Kubernetes Cloud Native 调度
深入探讨容器化技术:Kubernetes 的魅力
【10月更文挑战第6天】深入探讨容器化技术:Kubernetes 的魅力
213 0
|
网络协议 安全 Docker
windows环境下的设置docker远程访问(开放2375端口)
windows环境下的设置docker远程访问(开放2375端口)
3017 0
|
SQL 存储 JSON
Python写入MySQL数据库to_sql()一文详解+代码展示
Python写入MySQL数据库to_sql()一文详解+代码展示
4595 0
Python写入MySQL数据库to_sql()一文详解+代码展示
|
JSON 关系型数据库 MySQL
穿越MySQL版本时光:5.7和8.0的差异全揭秘
穿越MySQL版本时光:5.7和8.0的差异全揭秘
8053 0

热门文章

最新文章