fastapi发布web配置页面

news2025/3/11 2:24:14

fastapi发布web配置页面

FastAPI 是一个基于 Python 的快速 Web 开发框架,它提供了许多功能来简化 Web 开发过程。其中一个重要的功能是能够轻松地创建 API 文档页面。

在 FastAPI 中,可以使用 OpenAPI 和 Swagger 来创建 API 文档页面。下面是一个简单的示例,演示如何使用 FastAPI 创建一个带有 API 文档页面的应用程序。

1. 首先,创建一个新的 FastAPI 应用程序。在终端中输入以下命令:

pip install fastapi

2. 在一个新的 Python 文件中创建一个 FastAPI 应用程序,例如 app.py。输入以下代码:

from fastapi import FastAPI

app = FastAPI()

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

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

3. 在同一个目录中创建一个 main.css 文件,以提供自定义的 CSS 样式。这个文件是可选的,但可以为文档页面添加一些美化和自定义的样式。

  1. 运行应用程序。在终端中输入以下命令:
uvicorn app:app --host 0.0.0.0 --port 8000

5. 现在,打开浏览器并访问 http://localhost:8000/docs,应该可以看到 API 文档页面。如果没有看到页面,请确保应用程序正在运行,并且访问的 URL 是正确的。

在上述代码中,我们使用了 FastAPI 的路由装饰器 @app.get() 来定义了两个 API 端点:根路径 //items/{item_id}。然后,我们使用 OpenAPI 和 Swagger 来生成 API 文档页面。当用户访问 /docs 路径时,他们会看到一个可交互的文档页面,其中包含了我们定义的 API 端点的信息、参数和返回值。

在文档页面中,我们可以使用一些预定义的标记和属性来描述 API。例如,在路由装饰器中,我们使用了 {item_id} 来表示路径参数,并指定了它的类型为整数。此外,我们还定义了一个可选的查询参数 q,它的类型为字符串。这些信息都会自动反映在生成的文档页面中。

除了自动生成文档页面外,FastAPI 还提供了许多其他功能和工具来简化 Web 开发过程。例如,它支持自动验证请求和响应、支持异步处理、支持中间件等等。如果你需要更高级的功能和更复杂的 API,FastAPI 可以帮助你快速开发出高质量的 Web 应用。

完整的代码

from fastapi import FastAPI, Form
from fastapi.responses import HTMLResponse

app = FastAPI()

@app.get("/")
def index():
    form = """
            <!DOCTYPE html>
    <html>
    <head>
      <title>配置界面</title>
    </head>
    <body>
      <div class="container"  style="text-align:center; position:relative;">
      <h1>配置界面</h1>

      <form method="post" action="/submit2">
        <label for="name">名称:</label>
        <input type="text" id="name" name="name" placeholder="输入名称"><br><br>

        <label for="email">邮箱:</label>
        <input type="email" id="email" name="email" placeholder="输入邮箱"><br><br>

        <label for="password">密码:</label>
        <input type="password" id="password" name="password" placeholder="输入密码"><br><br>

        <label for="country" left:0>国家:</label>
        <select id="country" name="country">
          <option value="china">中国</option>
          <option value="usa">美国</option>
          <option value="uk">英国</option>
          <option value="germany">德国</option>
        </select><br><br>

        <label for="gender" left:0>性别:</label>
        <input type="radio" id="male" name="gender" value="male">
        <label for="male">男</label>
        <input type="radio" id="female" name="gender" value="female">
        <label for="female">女</label><br><br>

        <label for="interests">兴趣:</label>
        <input type="checkbox" id="sports" name="interests" value="sports">
        <label for="sports">运动</label>
        <input type="checkbox" id="music" name="interests" value="music">
        <label for="music">音乐</label>
        <input type="checkbox" id="movies" name="interests" value="movies">
        <label for="movies">电影</label><br><br>

        <input type="submit" value="保存">
      </form>
      </div> 
    </body>
    </html>
        """
    return HTMLResponse(content=form, status_code=200)


@app.post("/submit2")
def submit2(email:str =  Form(...),name: str = Form(...), password: str = Form(...),gender: str = Form(...)):
    print(email,name, password,gender)
    return {"message": "Configuration submitted successfully"}


if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

打开网页127.0.0.1:8000
在这里插入图片描述

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

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

相关文章

OLED透明屏与传统显示屏的区别:探索未来视觉体验的新里程碑

OLED透明屏作为一种新兴的显示技术&#xff0c;与传统显示屏相比&#xff0c;具有许多独特的特点和优势。 那么&#xff0c;在这篇文章中&#xff0c;尼伽便通过比较OLED透明屏和传统显示屏的区别&#xff0c;包括透明性、对比度、色彩表现力、节能环保等方面&#xff0c;为读…

聚观早报|京东称在技术投入没有止境;木蚁机器人完成B2轮融资

【聚观365】8月18日消息 京东零售CEO表示在技术上投入没有止境 木蚁机器人完成B2轮超亿元融资 耐能推出AI芯片KL730 三星电子泰勒晶圆厂首家客户是AI半导体厂商 韩国新能源汽车7月出口额同比大增36% 京东零售CEO表示在技术上投入没有止境 近日&#xff0c;京东零售CEO辛利…

​Kubernetes的演变:从etcd到分布式SQL的过渡

DevRel领域专家Denis Magda表示&#xff0c;他偶然发现了一篇解释如何用PostgreSQL无缝替换etcd的文章。该文章指出&#xff0c;Kine项目作为外部etcd端点&#xff0c;可以将Kubernetes etcd请求转换为底层关系数据库的SQL查询。 受到这种方法的启发&#xff0c;Magda决定进一步…

Linux Shell如果ping失败就重启网卡(详解)

直接上脚本 -------------------------------------------------------------------------- #vi /tmp/ping_check.sh #!/bin/bash IP="1.1.1.1" PacketLoss=`ping -c 4 -w 4 1.1.1.1 | grep packet loss | awk -F packet loss {print $1} | awk {print $NF}|se…

打开软件提示msvcr100.dll丢失的修复教程(解决方法)

电脑上出现了msvcr100.dll丢失的错误。这个错误导致无法正常运行一些使用C编写的程序。msvcr100.dll是Microsoft Visual C 2010 Redistributable安装程序提供的一个动态链接库文件。当一个程序需要使用msvcr100.dll中的函数或类时&#xff0c;它会在运行时动态链接到这个库文件…

前馈神经网络dropout实例

直接看代码。 &#xff08;一&#xff09;手动实现 import torch import torch.nn as nn import numpy as np import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt#下载MNIST手写数据集 mnist_train torchvision.datasets.MN…

代码随想录-数组篇

2-二分查找 方法一&#xff1a; 左闭右闭&#xff0c;[left, right] class Solution { public:int search(vector<int>& nums, int target) {//[left, right]int left 0;int right nums.size() - 1 ;while(left < right){int middle left ((right - left)…

git 回滚相关问题

原本用as自带的git执行回滚任务&#xff0c; 但是提交之后发现并没有成功&#xff0c; 后面通过命令行的方式重新回滚并且提交上去&#xff0c;就可以了 说明as的git还是有点小瑕疵&#xff0c;还是命令行最稳妥 相关博文&#xff1a; git代码回滚操作_imkaifan的博客-CSDN博…

WebDAV之π-Disk派盘 + 那样记账

那样记账是一款个人记账应用,致力于提供简单和轻量的记账体验。以下是该应用的一些特点和功能: 1. 快速记账:那样记账提供多种直接记账方式,让您能够快速记录收入和支出。 2. 自定义:您可以自定义收支分类,以及记账的时间和金额。根据个人需求,随时修改和调整记账信息…

项目经理到底要不要懂技术?

大家好&#xff0c;我是老原。 “项目经理要不要懂技术&#xff1f;” 这个问题的争议性一直挺大&#xff0c;就好比先有的鸡还是先有的蛋&#xff0c;各方说各方有理。 我见过只负责流程不需要懂技术的pm&#xff0c;也见过pm连软硬件设计都有review的。 一般总结来说就是…

数据结构——链表详解

链表 文章目录 链表前言认识链表单链表结构图带头单循环链表结构图双向循环链表结构图带头双向循环链表结构图 链表特点 链表实现(带头双向循环链表实现)链表结构体(1) 新建头节点(2) 建立新节点(3)尾部插入节点(4)删除节点(5)头部插入节点(6) 头删节点(7) 寻找节点(8) pos位置…

GBU812-ASEMI新能源专用整流桥GBU812

编辑&#xff1a;ll GBU812-ASEMI新能源专用整流桥GBU812 型号&#xff1a;GBU812 品牌&#xff1a;ASEMI 封装&#xff1a;GBU-4 恢复时间&#xff1a;&#xff1e;50ns 正向电流&#xff1a;80A 反向耐压&#xff1a;1200V 芯片个数&#xff1a;4 引脚数量&#xff…

Windows基础安全知识

目录 常用DOS命令 ipconfig ping dir cd net user 常用DOS命令 内置账户访问控制 Windows访问控制 安全标识符 访问控制项 用户账户控制 UAC令牌 其他安全配置 本地安全策略 用户密码策略复杂性要求 强制密码历史&#xff1a; 禁止密码重复使用 密码最短使用期限…

【菜鸡读论文】MS-TCT: Multi-Scale Temporal ConvTransformer for Action Detection

【菜鸡读论文】MS-TCT: Multi-Scale Temporal ConvTransformer for Action Detection 大家好哇&#xff01;是谁美滋滋地准备开始放暑假了&#xff01;没错&#xff01;你没有听错&#xff01;放暑假&#xff01; 谁能想到都已经立秋了&#xff0c;竟然有人还在实验室&#xf…

java-IONIO

一、JAVA IO 1.1. 阻塞 IO 模型 最传统的一种 IO 模型&#xff0c;即在读写数据过程中会发生阻塞现象。当用户线程发出 IO 请求之后&#xff0c;内 核会去查看数据是否就绪&#xff0c;如果没有就绪就会等待数据就绪&#xff0c;而用户线程就会处于阻塞状态&#xff0c;用户线…

Codeforces Round 893 (Div. 2)B题题解

文章目录 [The Walkway](https://codeforces.com/contest/1858/problem/B)问题建模问题分析1.分析所求2.如何快速计算每个商贩被去除后的饼干数量代码 The Walkway 问题建模 给定n个椅子&#xff0c;其中有m个位置存在商贩&#xff0c;在商贩处必须购买饼干吃&#xff0c;每隔…

u8g2 自制字体

显示器 SSD1306 单片机ARDUINO NANO 使用U8G2 将表情生成字库文件 使用DRAWGLYPH 显示表情字库 GIF转成40X80 GIF转PNG PNG 转1位 PNG生成BDP BDP生成 C U8G2源代码的TOOL\FONT中包含了PNG转BDP BDP转.C 文件 下载原代码 &#xff1a; GitHub - olikraus/u8g2: U8gl…

python3 0基础学习----数据结构(基础+练习)

python 0基础学习笔记之数据结构 &#x1f4da; 几种常见数据结构列表 &#xff08;List&#xff09;1. 定义2. 实例&#xff1a;3. 列表中常用方法.append(要添加内容) 向列表末尾添加数据.extend(列表) 将可迭代对象逐个添加到列表中.insert(索引&#xff0c;插入内容) 向指定…

redis查看执行的命令+配置文件命令

1.SLOWLOG LEN 获取 Slowlog 的长度&#xff0c;以确定 Slowlog 中有多少条记录 2.SLOWLOG GET 获取 Slowlog 中的具体记录。你可以使用 SLOWLOG GET 命令来获取第 n 条记录的详细信息&#xff0c;其中 n 是记录的索引&#xff08;从 0 开始&#xff09; 3.如果你想获取多条最…

RFID赋能新能源电池生产的智慧演进

随着全球对可再生能源的需求不断增长&#xff0c;新能源电池作为储能和供电的重要组成部分&#xff0c;正逐渐成为关注的焦点。然而&#xff0c;新能源电池的生产过程中存在着一系列挑战&#xff0c;如追踪和管理电池的生命周期、确保质量和安全等。在这方面&#xff0c;RFID正…