当前位置: 首页 > news >正文

编写fastapi接口服务

FastAPI是一个基于 Python 的后端框架,该框架鼓励使用 Pydantic 和 OpenAPI (以前称为 Swagger) 进行文档编制,使用 Docker 进行快速开发和部署以及基于 Starlette 框架进行的简单测试。

step1:安装必要库

pip install fastapi uvicorn

step2:构建代码

创建main.py脚本文件,然后引入FastAPI模块,就可以构建接口了

from fastapi import FastAPI, Queryapp = FastAPI()@app.post("/路由")
def hello():return {"Hello": "World"}@app.post('/路由')
async def function(try:*except:*
return {'Hello': World}

这只是一个简单示例,也可以用get等替换post

step3:运行接口

和其他的模块不一样的是,FastAPI需要运行指定命令来运行api服务:

需要在当前目录下执行下面的命令,他会主动去找到main入口:

uvicorn main:app --reload

step4:更多指南

欢迎参考官网:https://fastapi.tiangolo.com/

Other:自己写了个接口 

是GitHub上一个开源的给图片添加盲水印的项目blind_watermark

from fastapi import FastAPI
from fastapi.responses import FileResponse
import subprocess
from fastapi.middleware.cors import CORSMiddleware
from fastapi import Form
from blind_watermark.blind_watermark import WaterMarkapp = FastAPI()# 后台api允许跨域
app.add_middleware(CORSMiddleware,allow_origins='*',allow_credentials=True,allow_methods=["*"],allow_headers=["*"],
)
@app.post("/embed")
async def embed_watermark(pwd: int = Form(), image_path: str = Form(), watermark_text: str = Form(), output_path: str = Form()):try:subprocess.run(["blind_watermark", "--embed", image_path, watermark_text, output_path])# return FileResponse(output_path, filename="embedded.png")bwm1 = WaterMark()bwm1.read_img(image_path)bwm1.read_wm(watermark_text,mode='str')bwm1.embed(output_path)watermark_size = len(bwm1.wm_bit)return {"image": FileResponse(output_path, filename="embedded.png"), "watermark_size": watermark_size}except Exception as e:return {"error": str(e)}@app.post("/extract")
async def extract_watermark(pwd: int = Form(), wm_shape: int = Form(), image_path: str = Form()):try:subprocess.run(["blind_watermark", "--extract", "--pwd", str(pwd), "--wm_shape", str(wm_shape), image_path])bwm1 = WaterMark(password_img=int(pwd))wm_str = bwm1.extract(filename=image_path, wm_shape=wm_shape, mode='str')return {"success": "Watermark extracted successfully.",'watermark is:':wm_str}except Exception as e:return {"error": str(e)}if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=8886)

解释一下

extract也是同理,需要调用哪些功能,就在这里添加,然后return返回的内容就是用调用工具,比如postman调用后显示的内容


postman界面调用信息:

如果我的代码有不妥的地方,欢迎指正

http://www.lryc.cn/news/267470.html

相关文章:

  • RasaGPT对话系统的工作原理
  • C++设计模式 #7 工厂方法(Factory Method)
  • 信息网络协议基础-接入网技术
  • springboot 自动装配原理
  • 前端---表格标签
  • 【软件工程】可执行文件和数据分离
  • Linux dirs命令
  • 有什么好用的C/C++源代码混淆工具?
  • iOS设备信息详解
  • 如何使用支付宝沙箱环境支付并公网调用sdk创建支付单服务
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • 用芯片SIC8833可开发电子秤方案
  • 【Qt-QFile-QDir】
  • 设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点
  • Android 13 - Media框架(25)- OMXNodeInstance(二)
  • 生物系统学中的进化树构建和分析R工具包V.PhyloMaker2的介绍和详细使用
  • XStream 反序列化漏洞 CVE-2021-39144 已亲自复现
  • 深入剖析LinkedList:揭秘底层原理
  • 计算机网络复习-OSI TCP/IP 物理层
  • 虚拟机服务器中了lockbit2.0/3.0勒索病毒怎么处理,数据恢复应对步骤
  • 【MATLAB】 RGB和YCbCr互转
  • 【线性代数】决定张成空间的最少向量线性无关吗?
  • 暴力破解(Pikachu)
  • 如何使用CMake查看opencv封装好的函数
  • 微盛·企微管家:用户运营API集成,电商无代码解决方案
  • Hive 部署
  • CopyOnWriteArrayList源码阅读
  • Windows操作系统:共享文件夹,防火墙的设置
  • STM32独立看门狗
  • 财务数据智能化:用AI工具高效制作财务分析PPT报告