首页 > 其他分享 >【FastAPI】入门基础

【FastAPI】入门基础

时间:2024-10-16 21:48:05浏览次数:1  
标签:__ info 入门 FastAPI app 基础 print import data

  • FastAPI 介绍和安装

    • FastAPI 是一个基于 Python 3.6+ 版本的异步 WEB 应用框架,使用 Python 类型注解构建 web API 。它的主要特点如下:
      • 高性能:与 Node JS 和 Go 相当。
      • 编码快:将开发功能的速度提高 2~3 倍。
      • Bug少:减少大约 40% 的由开发人员导致的错误。
      • 直观:强大的编辑器支持,可智能感知和补全代码。
      • 简单:易于学习和使用,减少文档阅读时间。
      • 简短:尽量减少代码重复。
      • 健壮:获得可用于生产的代码,具有自动交互文档。
      • 基于标准:基于 OpenAPI 和 JSON Schema 。
  • 1.安装

    • pip install fastapi
    • pip install "uvicorn[standard]"
  • 2.请求方式

import uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.get("/index")
def index():
    return {"name": "index222"}


@app.post("/home")
def home():
    return {"name": "home"}


@app.api_route("/info", methods=["GET", "POST"])
def info():
    return {"name": "info"}


if __name__ == '__main__':
    uvicorn.run(app, host="127.0.0.1", port=9001)
    # uvicorn.run("v1.app", host="127.0.0.1", port=9001,reload=True)  # 修改代码后,自动重启
  • 3.请求参数
import uvicorn
from fastapi import FastAPI
from fastapi.requests import Request

app = FastAPI()

#http://127.0.0.1:9001/home/12
@app.get("/home/{uid}")
def home(uid):
    print(uid)
    return {"data": "ok"}

#http://127.0.0.1:9001/index?info=123&age=18
@app.get("/index")
def index(info: str, age: int):
    print(info, age)
    return {"data": "ok"}

#
# @app.get("/mine/{uid}")
# def mine(uid: int, info: str, age: int):
#     print(uid)
#     print(info, age)
#     return {"data": "ok"}

# http://127.0.0.1:9001/mine/12?info=123&age=18
@app.get("/mine/{uid}")
def mine(request: Request, uid: int):
    print(uid)
    print(request.query_params)   # info=123&age=18
    print(request.query_params.get("info"))
    return {"data": "ok"}


if __name__ == '__main__':
    uvicorn.run(app, host="127.0.0.1", port=9001)
  • 4.请求体
import uvicorn
from fastapi import FastAPI
from fastapi.requests import Request
from pydantic import BaseModel
from typing import List, Dict

app = FastAPI()

class Data(BaseModel):
    name: str
    age: int
    hobby: List
    info: Dict


@app.post("/home")
def home(data: Data):
    print(data.name)
    print(data.hobby)
    print(data.info)
    return {"data": "ok"}


@app.post("/mine")
async def mine(request: Request):
    data_dict = await request.json()
    print(data_dict)
    # {'name': 'xwl', 'age': 19, 'hobby': ['篮球', '足球'], 'info': {'k1': 123, 'k2': 456, 'k3': [111, 222, 33]}}
    return {"data": "ok"}


if __name__ == '__main__':
    uvicorn.run(app, host="127.0.0.1", port=9001)
  • 5.请求中间件,拦截所有的请求
import uvicorn
from fastapi import FastAPI
from fastapi import Request
from fastapi.responses import JSONResponse

app = FastAPI()

@app.middleware("http")
async def auth(request: Request, call_next):
    print("before")
    res = await call_next(request)
    print("after")
    return res

@app.get("/home")
def home(age):
    print(age)
    return {"data": "ok"}

if __name__ == '__main__':
    uvicorn.run(app, host="127.0.0.1", port=9001)

标签:__,info,入门,FastAPI,app,基础,print,import,data
From: https://www.cnblogs.com/xwltest/p/18471020

相关文章

  • C++基础语法---类和对象
    目录1、概念1.1对象:1.2类型:2、抽象3、封装4、对象的产生5、对象的大小6、 操作对象7、数据的保护和共享8、C++内置字符串操作类例:分文件形式---时钟类代码实现:总结:1、概念1.1对象:现实世界中一切客观存在的事物,统称为对象。对象是有形的,例如一杯水,一台......
  • SpringBoot Aop面向切面编程-快速入门-实战案例
    AOP部分笔记来自黑马程序员。一、AOP概述什么是AOP?AOP英文全称:AspectOrientedProgramming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。那什么又是面向方法编程呢,为什么又需要面向方法编程呢?来我们举个例子做一个说明:比如,我们这里有一个......
  • SpringBoot集成 规则引擎Drools 快速入门
    规则引擎Drools一、drools1、引入问题某电商平台的促销活动,活动规则是根据⽤户购买订单的⾦额给⽤户送相应的积分,购买的越多送的积分越多用户购买的金额和对应送多少积分的规则如下:规则编号订单金额奖励积分1100元以下不加分2100元-500元加10分3500元-1000元加50......
  • 前端入门学习之css盒子原则
    文章目录前端入门学习之css盒子原则引入块级元素:块级元素的特点占据整行设置高度和宽度包含其他元素盒子原则:margin:例子:boder:padding:前端入门学习之css盒子原则引入块级元素:当一个html标签元素展示方式为block,也就是它的display属性为block,那么我们可以想......
  • ArkTS基础语法:
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • C语言基础分享-初始C语言
    1.1什么是C语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的国际标准:ANSICC89C90C99C11...其中C89C90为主流C语言是一门面向过程的计算机编程语言。C语言是编译型语言。编译器主要有Clang、GCC、WIN-TC、MSVC、TurboC等。1.2第一个C语言程序点击查......
  • 从入门到精通——差分数组
    差分数组差分数组通常是指一个数组,其中每个元素是原数组中对应元素与前一个元素的差。这种数组在处理序列数据时非常有用,尤其是在需要计算连续项之间的变化或者进行数据压缩时。定理解释:差分数组的一个核心定理是,给定一个差分数组,可以唯一地重建原始数组。这意味着,如果......
  • JAVA基础知识点
    C/C++速度快JAVA大型web开发,手机端安卓(JAVA是HTML的扩展)C# 中小型Web,桌面程序开发SHELL,VB操作指令Python数字处理,中小型网站PHP中小型网站Arrays.toString(args)对于importjava.util具有依赖作用JAVA特点:1)简单性//语法相较C更简易2)面向对象 3)分......
  • 计算机基础(cpu,内存,硬盘)
    计算机基础(cpu,内存,硬盘)内存:负责硬盘等硬件上的数据与CPU之间数据交换处理;缓存系统中的临时数据。断电后数据丢失。硬盘:​ 存储资料和软件等数据的设备,有容量大,断电数据不丢失的特点。流程​ 简单来说,硬盘用来存储程序和数据,当运行程序时,CPU首先接受到命令,之后CPU是告诉......
  • 黑客 如何攻破一个网站?长文图解全流程,零基础入门到精通,收藏这篇就够了
    一篇科普文,很适合小白,长文请静下心看。通过本文你将了解黑客常用的入手思路和技术手法,适合热爱网络信息安全的新手朋友了解学习。本文将从最开始的信息收集开始讲述黑客是如何一步步的攻破你的网站和服务器的。阅读本文你会学到以下内容:1.渗透测试前的简单信息收集。2.s......