fastapi之helloworld

简介: fastapi之helloworld

简介

以下简介来自官网描述:

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请求,可以在文档页调试这个接口测试。

相关文章
|
前端开发 JavaScript 网络协议
深入理解Python Web开发中的前后端分离与WebSocket实时通信技术
【7月更文挑战第18天】前后端分离采用Flask/Django框架,前端JavaScript框架如Vue.js与后端通过AJAX/Fetch通信。WebSocket提供实时双向通信,Python可借助websockets库或Flask-SocketIO实现。最佳实践包括定义清晰的接口规范,确保安全性(HTTPS,认证授权),优化性能,和健壮的错误处理。结合两者,打造高效实时应用。
388 1
|
算法 C语言
如何用C语言轻松判断回文数?
如何用C语言轻松判断回文数?
|
SQL 前端开发 安全
详细介绍前后端分离必备的接口规范,包括命名规范、参数规范、错误处理规范等
详细介绍前后端分离必备的接口规范,包括命名规范、参数规范、错误处理规范等
3767 1
|
消息中间件 Linux
Linux IPC(进程间通信)管理:深入解析ipcs和ipcrm命令的用法与示例
在Linux操作系统中,进程间通信(IPC)是实现进程之间数据传递和同步的关键机制。Linux提供了多种IPC方式,如消息队列、信号量和共享内存等。为了优化系统性能与稳定性,及时管理和清理IPC资源非常重要。本文将深入介绍ipcs和ipcrm命令的使用方法,并给出丰富的示例,以帮助读者更好地理解IPC资源管理的实践技巧。
1629 1
|
人工智能 监控 数据可视化
智慧工地全套源代码 智慧工地信息化管理平台源码(PC端+移动端+可视化数据大屏端)
v智慧工地全套源代码 智慧工地信息化管理平台源码(PC端+移动端+可视化数据大屏端)
1082 2
|
机器学习/深度学习 算法 TensorFlow
【深度学习】基于卷积神经网络(tensorflow)的人脸识别项目(一)
【深度学习】基于卷积神经网络(tensorflow)的人脸识别项目(一)
566 0
【深度学习】基于卷积神经网络(tensorflow)的人脸识别项目(一)
|
XML PHP 数据安全/隐私保护
phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护
转:http://www.cnblogs.com/huangcong/p/3687665.html   首先到phpexcel官网上下载最新的phpexcel类,下周解压缩一个classes文件夹,里面包含了PHPExcel.
2193 0
|
安全 Python 容器
Python中好用的模块-collections
文章介绍了Python中collections模块的几个实用组件,包括Counter、defaultdict、OrderedDict、namedtuple、deque和ChainMap的功能与使用方法。
198 2
|
vr&ar 计算机视觉
REALY头部重建榜单冠军模型HRN解读【OpenVI—论文解读系列】
高保真 3D 头部重建在许多场景中都有广泛的应用,例如 AR/VR、医疗、电影制作等。尽管大量的工作已经使用 LightStage 等专业硬件实现了出色的重建效果,从单一或稀疏视角的单目图像估计高精细的面部模型仍然是一个具有挑战性的任务。 本文中,我们将介绍CVPR2023最新的头部重建论文,该工作在单图头部重建榜单REALY上取得正脸、侧脸双榜第一,并在其他多个数据集中取得了SOTA的效果。
937 6
|
缓存 网络协议 NoSQL
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-3
五、异常TCP建立情况 1)connect系统调用耗时失控 客户端在发起connect系统调用的的时候,主要工作就是端口选择。在选择的过程中有一个大循环