异步框架 fastapi -- 简单介绍

news2024/11/17 20:35:50

文章目录

  • fastapi 介绍
  • restful接口设计
  • 简单应用
  • Swagger风格的接口文档

fastapi 介绍

fastapi官方文档

  • fastapi 是现代化、高性能、基于python标准类型注释的异步web框架;
  • 基于python构建web APIs,性能可比go语言;
  • 高效编码,更少的bug错误;
  • 安装pip install fastapi uvicorn,部署基于ASGI;

 

restful接口设计

  • 应用场景: 前后端分离
  • 面向资源的设计,每个 uri 是一个资源,对资源的操作使用请求的方法表示
    • GET, 获取资源;
    • POST,创建资源;
    • PUT,更新资源;
    • DELETE,删除资源;
    • HEAD 类似GET,只返回头部信息;
    • OPTIONS,查看服务端支持的请求方法等,常用跨域的检查;
  • 交互数据格式:json;
  • uri 资源路径设计
    • 尽量使用名词;
    • 尽量体现版本号,如/v1/user
    • 使用查询参数;
       

简单应用

# __author__ = "laufing"

from fastapi import FastAPI # 异步web框架
import uvicorn # ASGI

# 创建应用对象
app = FastAPI()


# GET 接口
@app.get("/")
def index():
    return {
        "code": 200,
        "msg": "0k"
    }

# get /user/info?page=5&pageSize=10
@app.get("/user/info")
def user_info(page: int = 1, pageSize: int = 10) -> dict: # 查询参数 直接传入
    print("query parameters:", page, pageSize)
    return {
        "code": 200,
        "msg": "page=%d and pageSize=%d" % (page, pageSize)
    }


# 数据模型、序列化
from pydantic import BaseModel


class UserData(BaseModel):
    name: str # 必须参数
    password: str
    phone: str



# post /user/register    请求体数据 {"name": "jack", "password": 123, "phone": 123}
@app.post("/user/register")
def register(user: UserData) -> UserData:
    print(user, type(user)) # UserData类型的对象
    return user # 将模型序列化为json


if __name__ == '__main__':
    # 即绑定局域网ip
    # 0.0.0.0 支持linux ,可以在py脚本中启动
    # uvicorn.run(app, host="localhost", port=8083, log_level="info")
    pass

启动方式:

  • python脚本方式;
    • uvicorn.run(app, host, port)
  • 命令行方式
    • uvicorn src.main:app --reload

可以在浏览器中测试接口;
 

Swagger风格的接口文档

在浏览器中输入:http://localhost:8000/docs,可以在如下接口中进行测试。

在这里插入图片描述
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2174759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据的挑战是小文件

小文件可能会给存储平台及其支持的应用程序带来大问题。在 Google 上搜索 “small files performance” 会产生 2M 的结果。这篇博文将更深入地研究小文件问题,深入研究其根源并总结解决方案。 问题陈述 出于本讨论的目的,小文件通常被视为小于 64 KB …

攻防世界---->happyctf

做题笔记。 下载 查壳。 32ida打开。 先运行一下: C写的。 追踪 good job 具体跟踪分析: 说白了,就是一个用于判断 flag key的。 往上走: 跟进。 打开 od吧。 锁定地址 追踪看看。(此题,ida不能动态 od可以…

Hugging Face从命令行到桌面:Chat-macOS让AI互动更简单,关键还免费!

你是否曾经觉得,命令行操作虽然强大,但总是有些难以上手?或者,你是否希望和AI互动可以像日常使用macOS应用一样直观?那你一定要试试Chat-macOS,它让你从命令行走向桌面,体验更轻松的AI互动方式。 1. 什么是Chat-macOS? Chat-macOS是一个桌面应用程序,它能够将Hug…

Windows安全日志7关键事件ID分析

背景 Windows日志里的事件分析有助于在系统出现异常时分析出异常原因,利于针对问题做出系统的修复和预防。今天阿祥就整理出Windows常见的事件,分析这些事件的具体原因,希望对系统运维工程师们有一定的帮助! 具体事件ID 1、事件ID…

MySQL—触发器详解

基本介绍 触发器是与表有关的数据库对象,在 INSERT、UPDATE、DELETE 操作之前或之后触发并执行触发器中定义的 SQL 语句。 触发器的这种特性可以协助应用在数据库端确保数据的完整性、日志记录、数据校验等操作。 使用别名 NEW 和 OLD 来引用触发器中发生变化的记…

JSR 303学习

系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…

fiddler抓包12_篡改请求(请求前断点)

课程大纲 原理 正常“客户端-服务器”通信,即发送请求,接收返回。 Fiddler抓包是「客户端-浏览器」进行交互时,请求和响应都会从Fiddler通过,Fiddler可以捕获并展示。 请求前断点(BreakPoint Before Request&#xff0…

[论文阅读] ChartInstruct: Instruction Tuning for Chart Comprehension and Reasoning

原文链接:http://arxiv.org/abs/2403.09028 源码链接:https://github.com/vis-nlp/ChartInstruct 启发:本文构建的instruction-tuning数据集以及使用该数据集对模型进行微调的过程都值得学习。 Abstract 研究对象:图表 研究…

yakit使用教程(一,下载并进行基础配置)

一,yakit简介 YAKIT(Yet Another Knife for IT Security)是一款网络安全单兵工具,专为个人渗透测试员和安全研究人员设计。它整合了一系列实用的安全工具,例如密码破解工具、网络扫描器、漏洞利用工具等,帮…

空间复杂度动态顺序表

目录 1>>闲话 2>>空间复杂度 3>>顺序表!!(有点难度) 3.1>>静态顺序表 3.2>>动态顺序表 3.2.1>>初始化动态顺序表 3.2.2>>实现尾插 4>>结语 1>>闲话 感谢大家对小…

【YOLO目标检测反光衣数据集】共2388张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式:YOLO格式 图片数量:2388 标注数量(txt文件个数):2388 标注类别数:2 标注类别名称:reflective_clothes、other_clothes 数据集下载:反光衣数据集 图片示例 数据…

HJ50-四则运算:栈的运用、中缀表达式转后缀表达式并计算结果

文章目录 题目一、分析1.1表达式预处理1.2中缀表达式转后缀1.3 后缀表达式计算结果 二、答案 题目 一、分析 通过利用栈将中缀表达式转换为后缀表达式,在根据后缀表达式计算运算结果。由于包含负数操作数的情况,并且操作数位数不固定为1,因此…

【算法篇】二叉树类(3)(笔记)

目录 一、Leetcode 题目 1. 二叉树的最近公共祖先 2. 二叉搜索树的最近公共祖先 (1)递归法 (2)迭代法 3. 二叉搜索树中的插入操作 (1)递归法 (2)迭代法 4. 删除二叉搜索树中…

时间序列LSTM实现

这个代码参考了时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)_lstm预测模型-CSDN博客 结合我之前所学的lstm-seq2seq里所学习到的知识对其进行预测 import time import numpy as np import pandas as pd import torch import…

革命题材网络电影《突进夹金山》将于10月上线

“长征万里险,最忆夹金山”。这座雪山不仅见证了红军战士们的英勇与牺牲,也成为了中国革命历史上的一座重要里程碑。 革命题材网络电影《突进夹金山》,作为四川省2024年度重点影视剧项目以及纪念红军长征90周年献礼的红色作品,由谢…

死磕P7: JVM类加载那些事儿,一起探知类的前世今生(二)

这是「死磕P7」系列第 006 篇文章,欢迎大家来跟我一起 死磕 100 天,争取在 2025 年来临之际,给自己一个交代。 接上篇,上一篇介绍了 JVM 类加载过程及类的生命周期,回顾一下: 死磕P7: JVM类加载那些事儿&a…

周文强聚焦助学育人,爱心图书室项目圆满完成

日前,一场充满爱心与希望的公益活动在四川甘孜州乡城县尼斯寄宿制小学拉开帷幕。这次名为“520爱心图书室”的公益活动,旨在通过捐赠图书的方式,支持基层青少年的阅读成长。作为此次活动的积极参与者,周文强不仅向学校捐赠了价值1…

python 高效读取多个geojson 写入一个sq3(Sqlite) 、效率提高90%+

1.问题缘由: 由于工作需求,需要将多个(总量10G)geojson文件写入到sq3库,众所周知,sqlite 不支持多线程写入,那该怎么办呢,在网上也查了很多策略,都没有达到立竿见影的效果…

甄选范文“论分布式存储系统架构设计”,软考高级论文,系统架构设计师论文

论文真题 分布式存储系统(Distributed Storage System)通常将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的…

车辆重识别(去噪扩散概率模型)论文阅读2024/9/27

[2] Denoising Diffusion Probabilistic Models 作者:Jonathan Ho Ajay Jain Pieter Abbeel 单位:加州大学伯克利分校 摘要: 我们提出了高质量的图像合成结果使用扩散概率模型,一类潜变量模型从非平衡热力学的考虑启发。我们的最…