简介

以下简介来自官网描述:

FastAPI是一个用于构建API的现代、快速(高性能)的web框架,使用Python3.6+并基于标准的Python类型提示。

关键特性:

  • 快速:可与NodeJS和Go比肩的极高性能。最快的Python Web框架之一。(PS:自行用wrk测试了一下,比flask快2倍,但比sanic慢一截,更不提Go Gin)
  • 高效编码:提高功能开发速度约200%至300%。(PS:选择Python做后端就是为了开发快)
  • 更少Bug:减少约40%的人为(开发者)导致的错误。
  • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
  • 简单:设计易于使用和学习,阅读文档更短。
  • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。
  • 健壮:生产可用级别的代码。还有自动生成的交互式文档
  • 标准化:基于(并完全兼容)API的相关开放标准:OpenAPI

安装

pip install fastapi

fastapi不像django那样自带web服务器,所以还需要安装uvicorn或者hypercorn

pip install uvicorn

code01: hello.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
return {"Hello": "world"} @app.get("/item/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}

运行

uvicorn hello:app --reload

命令说明:

  • hello: hello.py文件
  • app: 在hello.py文件中通过FastAPI()创建的对象
  • --reload: 让服务器在更新代码后重新启动。仅在开发时使用该选项。

打开浏览器访问:127.0.0.1:8000,将显示:{"Hello":"world"}



浏览器访问:127.0.0.1:8000/item/1,将显示:{"item_id":1,"q":null}

浏览器访问:127.0.0.1:8000/item/1?q=hello,将显示:{"item_id":1,"q":"hello"}

交互式API文档

浏览器访问:127.0.0.1:8000/docs,将会看到由 Swagger UI自动生成的交互式API文档

或者访问:127.0.0.1:8000/redoc,会看到由redoc自动生成的文档。

code02: main.py (官方文档中的代码)

from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel app = FastAPI() class Item(BaseModel):
name: str
price: float
is_offer: Optional[bool] = None @app.get("/")
def read_root():
return {"Hello": "world"} @app.get("/item/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q} @app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id}

多了一个put请求,可以在文档页调试这个接口测试。

fastapi之helloworld的更多相关文章

  1. 宝塔上部署FastAPI的步骤和一些注意点

    为了运维方便,选择直接用宝塔来管理python fastapi的项目,虽然直接部署可能性能更好更灵活,但是我选择了低层本,每个人的选择可能是不一样的,各有 考虑吧. 本文的大逻辑是先写一个hellow ...

  2. FastApi学习(一)

    前言 学习不止 正文 介绍 FastApi是PythonWeb框架的'新晋干员',虽然年轻但是很能打 目前已有 12k start GitHub 官网 为什么说他能打呢?它内部使用了 Python 的 ...

  3. 使用webstorm+webpack构建简单入门级“HelloWorld”的应用&&引用jquery来实现alert

    使用webstorm+webpack构建简单入门级"HelloWorld"的应用&&构建使用jquery来实现 1.首先你自己把webstorm安装完成. 请参考这 ...

  4. Idea下用SBT搭建Spark Helloworld

    没用过IDEA工具,听说跟Eclipse差不多,sbt在Idea其实就等于maven在Eclipse.Spark运行在JVM中,所以要在Idea下运行spark,就先要安装JDK 1.8+ 然后加入S ...

  5. 菜鸟学Struts2——HelloWorld

    写在前面 自从工作后就过上了只有一个月记忆的生活,太健忘,很多学过的东西因为用得少便忘记了,第二次学习struts,为了以后便于查阅,开始自己的博客之旅.Struts的学习还是从Hello World ...

  6. 初识AngularJS 之 HelloWorld和数据绑定

    1.Hello World 我用的开发工具是   atom   ,大家有需要的话可以找我要安装包嘻嘻 第一步: 写入以下代码: <!DOCTYPE html> <html ng-ap ...

  7. java环境搭建和写出一个Helloworld

    一.安装环境和配置环境变量(必要环节) 安装java并配置环境变量 :在"系统变量"中设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击 ...

  8. Delphi_01_控制台版HelloWorld

    对于Windows下的控制台编程,我相信很多人都不陌生.而C语言开始的著名的“Hello world”程序基本是学习编程的第一步.我想对于 RAD开发,大家熟悉的一般都是GUI编程,而对于consol ...

  9. Quartz —— 从 HelloWorld 开始

    1.Quartz 是用来完成任务调度的. 2.Quartz 的三个核心概念:调度器.任务.触发器. (1)Job:通过实现该接口来定义需要执行的任务. public interface Job { / ...

  10. 转载文章——从HelloWorld学习操作系统

    转载地址:https://my.oschina.net/hosee/blog/673628?p=%7b%7bcurrentPage+1%7d%7d 本文就将系统性的串联起那些知识点,方便复习和回顾.本 ...

随机推荐

  1. 音视频八股文(7)-- 音频aac adts

    AAC介绍 AAC(Advanced Audio Coding)是一种现代的音频编码技术,用于数字音频的传输和存储领域.AAC是MPEG-2和MPEG-4标准中的一部分,可提供更高质量的音频数据,并且 ...

  2. 2022-07-23:给定N件物品,每个物品有重量(w[i])、有价值(v[i]), 只能最多选两件商品,重量不超过bag,返回价值最大能是多少? N <= 10^5, w[i] <= 10^5, v

    2022-07-23:给定N件物品,每个物品有重量(w[i]).有价值(v[i]), 只能最多选两件商品,重量不超过bag,返回价值最大能是多少? N <= 10^5, w[i] <= 1 ...

  3. 2021-07-17:一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度。比如, {3,1,2,4,5}、{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山。山峰A和山

    2021-07-17:一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度.比如, {3,1,2,4,5}.{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山.山峰A和山 ...

  4. GPT大语言模型Alpaca-lora本地化部署实践【大语言模型实践一】

    模型介绍 Alpaca模型是斯坦福大学研发的LLM(Large Language Model,大语言)开源模型,是一个在52K指令上从LLaMA 7B(Meta公司开源的7B)模型微调而来,具有70亿 ...

  5. pytorch学习笔记——timm库

    当使用ChatGPT帮我们工作的时候,确实很大一部分人就会失业,当然也有很大一部分人收益其中.我今天继续使用其帮我了解新的内容,也就是timm库.毫不夸张的说,Chat GPT比百分之80的博客讲的更 ...

  6. 详解RocketMQ 顺序消费机制

    摘要:顺序消息是指对于一个指定的 Topic ,消息严格按照先进先出(FIFO)的原则进行消息发布和消费,即先发布的消息先消费,后发布的消息后消费. 本文分享自华为云社区<RocketMQ 顺序 ...

  7. UpSetR 关联的 venneuler 包安装笔记

    本文章已经设置了最低额度的付费阅读,如果您觉得文章对您有用,且手头宽裕,欢迎请作者喝杯热茶.本文章付费部分内容并不影响您对文章的阅读和理解,只是作者对付费阅读的一次尝试,感谢. 背景 R 语言中的 v ...

  8. 基于 gulp 的 fancybox 源码压缩

    前不久,处理生信分析的网页版自动化报告时候就使用过 fancybox,今天在优化个人博客,为博文增加图片缩放效果,解决一些滚动条问题时,才从 fancybox 的 Github 源码中接触到 gulp ...

  9. C++面试八股文:static_cast了解一下?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第20面: 面试官:C++中支持哪些类型转换? 二师兄:C++支持C风格的类型转换,并在C++11引入新的关键字规范了类型转换. 二师兄:C++11引 ...

  10. pcie reset系列之 内核框架

    FLR是pci reset的一种. 关于FLR的寄存器操作比较简单, 相关的寄存器有: 配置空间里device cap里的FLR capability bit, 这个表示设备是否支持FLR. 配置空间 ...