FastAPI 有两个依赖支持:

  • Starlette负责网络
  • ​ Pydantic负责数据

安装:

 安装命令

pip install fastapi

 FastAPI 还需要ASGI服务器,生产环境下可以使用Uvicorn

pip install uvicorn[standard]

​ 也可以使用以下命令安装所有依赖支持的库:

#该命令还安装了运行FastAPI应用的服务器 -uvicorn
pip install fastapi[all]

运行:

最简单的FastAPI文件所示如下:

from fastapi import FastAPI

app = FastAPI()

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

复制代码到 main.py

运行代码:

uvicorn main:app --reload

运行命令说明:

  • main:main.py 是python 模块
  • app:main.pyapp = FastAPI() 创建的对象
  • --reload:代码更新后,重启服务器,仅在开发时使用

也可以在main.py里加上这段代码,然后python main.py 运行

import uvicorn

if __name__ == '__main__':
uvicorn.run('main:app', reload=True, host='127.0.0.1', port=8000)

API文档:

通过访问 http://127.0.0.1:8000/docs 可以查看自动生成的API文档。

创建FastAPI的基本步骤

第一步:导入FastAPI

FastAPI是继承了Starlette的类

FastAPI可以调用Starlette的所有功能

第二步:创建FastAPI实例

变量app是FastAPI的类实例,该实例是创建API的主要交互对象。

第三步:创建路径操作

路径是指URL的第一个反斜杠(/)及之后的内容。

https://example.com/items/foo
/items/foo 表示路径或路由或端点

操作是指HTTP方法,常用的方法如下:

  • POST :创建数据
  • GET :读取数据
  • PUT :更新数据
  • DELETE :删除数据

@app.get("/")告诉FastAPI下方函数以如下方式处理访问请求:

  • 请求路径为 /
  • 使用 get 操作
@app   语法是python装饰器
装饰器接收到下方函数,并用它执行一些操作,
本例中,这个装饰器告诉FastAPI下方函数对应的路径是 / 和 get 操作,这就是路径操作装饰器。
第四步:定义路径操作和函数

路径操作函数由以下几部分组成:

  • 路径: /
  • 操作: get
  • 函数: 装饰器下方的函数
from fastapi import FastAPI

app = FastAPI()

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

FastAPI每次接收使用get方法访问URL /的请求时都会调用这个函数。本例中的路径操作函数是异步函数(async)

也可以不使用异步函数,例如:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
return {"message": "Hello World"}
第五步:返回内容
from fastapi import FastAPI

app = FastAPI()

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

路径操作函数可以返回字典、列表以及字符串、整数等单值。

还可以返回Pydantic模型

安装、小demo、基本的步骤的更多相关文章

  1. H5 PWA技术以及小demo

    H5 PWA技术 1.原生app优缺点 a.体验好.下载到手机上入口方便 b.开发成本高(ios和安卓) c.软件上线需要审核 d.版本更新需要将新版本上传到不同的应用商店 e.使用前需下载 2.we ...

  2. 新手 gulp+ seajs 小demo

    首先,不说废话,它的介绍和作者就不在多说了,网上一百度一大堆: 我在这里只是来写写我这2天抽空对seajs的了解并爬过的坑,和实现的一个小demo(纯属为了实现,高手请绕道); 一.环境工具及安装 1 ...

  3. Nancy之基于Self Hosting的补充小Demo

    前面把Hosting Nancy with ASP.NET.Self Hosting Nancy和Hosting Nancy with OWIN 以demo的形式简单描述了一下. 这篇是为Self H ...

  4. Android -- 自定义View小Demo,动态画圆(一)

    1,转载:(http://blog.csdn.NET/lmj623565791/article/details/24500107),现在如下图的效果: 由上面的效果图可以看到其实是一个在一个圆上换不同 ...

  5. React问答小demo

    在学习react初期,看了一些视频和资料,react基础知识差不多学完,跟着网上的一个教程,做了一个小型的问答demo. 需求看图说: 1.点击"添加"按钮,显示问题输入表单,再次 ...

  6. 学习react,动手实现一个小demo(仿知乎问答)

    学习react也有一周的时间,最近自己做了个仿知乎问答的小demo,项目源码在github上:https://github.com/yang302/reactQa 使用技术:bower+gulp+re ...

  7. 一周一个小demo — 前端后台的交互实例

    这一周呢,本K在大神的指导下,完成了一个利用ajax与php文件上传处理相结合的一个留言板功能的小实例,下面就让本K来带大家瞅瞅如何实现这一种功能. 一.界面概览 首先我们来看一下这个小demo的具体 ...

  8. 一个基于ES6+webpack的vue小demo

    上一篇文章<一个基于ES5的vue小demo>我们讲了如何用ES5,vue-router做一个小demo,接下来我们来把它变成基于ES6+webpack的demo. 一.环境搭建及代码转换 ...

  9. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)

    Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer   Advanced Installer :Free for 30 da ...

  10. 11.Python使用Scrapy爬虫小Demo(新手入门)

    1.前提:已安装好scrapy,且已新建好项目,编写小Demo去获取美剧天堂的电影标题名 2.在项目中创建一个python文件 3.代码如下所示: import scrapy class movies ...

随机推荐

  1. Vue2基本组件间通信

    Vue2组件通信的基础方式 自己的理解:组件化通信,无非就是数据你传我,我传你,两个组件的相互交流,方法很多,下方有图示(此篇建议小白阅读,大神的话也不会看,哈哈哈哈!仅供参考,有不同的意见可以一起交 ...

  2. Pandas_1_预备知识

    Chapter1_Python基础 1.1 Python基础 推导式: 两个对象之间的映射关系,类似于实数之间关系变换的函数,只不过对象变成了矩阵. # Ex1-1 vacabulary = ['co ...

  3. JavaScript入门④-万物皆对象:Object

    01.Object对象 Object 是 JavaScript 的一种 数据类型,它用于存储各种键值集合和更复杂的实体,是一组数据和功能的集合.JS中几乎所有对象都是继承自Object,Array.R ...

  4. 【微服务架构设计实施】第一部分:架构篇-1:微服务架构与Spring Cloud介绍

    〇.概述 一.微服务架构与Spring Cloud (一)概念 不同说法:细粒度的.清凉组件化的小型SOA(面向服务架构) 统一说法:小型应用程序(服务组件),使用轻量级设计方法和HTTP协议通信 理 ...

  5. 【Java SE进阶】Day04 Map、Debug

    一.Map集合 1.概述 映射 /双列集合 集合分为Collection(存储一个元素 )和Map(存储一对元素) 键不能重复,值可以重复 2.常用子类 HashMap 哈希表存储数据 元素存取数据不 ...

  6. 3.7V升压5V,3.7V转5V电路图芯片

    锂离子电池在如今是广泛应用存在我们生活中的方方面面的电子产品中.如,电子玩具,美容仪,医疗产品,智能手表,手机,笔记本,电动汽车等等非常多. 锂电池3.7V升压到5V,3.7V转5V稳压输出的电子产品 ...

  7. Surp Suite入门

    BurpSuite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据.服务器端的返回信息等.Burp Suite主要拦截HTTP和HTTPS 协议的流量,通过拦截,Burp S ...

  8. python 实现AES加解密

    AES 只是个基本算法,实现 AES 有几种模式,主要有 ECB.CBC.CFB 和 OFB  CTR,直接上代码,此处为AES加密中的CBC模式,EBC模式与CBC模式相比,不需要iv. impor ...

  9. 如何使用 Blackbox Exporter 监控 URL?

    前言 监控域名和 URL 是可观察性的一个重要方面,主要用于诊断可用性问题.接下来会详细介绍如何使用 Blackbox Exporter 和 Prometheus 在 Kubernetes 中实现 U ...

  10. [编程基础] C++多线程入门4-数据共享和资源竞争

    原始C++标准仅支持单线程编程.新的C++标准(称为C++11或C++0x)于2011年发布.在C++11中,引入了新的线程库.因此运行本文程序需要C++至少符合C++ 11标准. 4 数据共享和资源 ...