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

国外的app设计网站企管宝官网

国外的app设计网站,企管宝官网,网站调用wordpress,动漫制作专业好吗业务场景 API接收的参数是一个下载链接,服务端拿到这个链接后,下载文件,之后解析文件,解析成功后返回解析成功否则解析失败。 项目结构 app/ ├── main.py # 入口 ├── api.py # API 路由 ├── services…

业务场景

API接收的参数是一个下载链接,服务端拿到这个链接后,下载文件,之后解析文件,解析成功后返回解析成功否则解析失败。

项目结构

app/
├── main.py          # 入口
├── api.py           # API 路由
├── services/├── downloader.py  # 下载逻辑└── parser.py      # 解析逻辑

安装依赖

在项目的虚拟环境中安装依赖:
如何创建虚拟环境参考之前的文章:
https://blog.csdn.net/zhang_jiamin/article/details/147442999?spm=1011.2415.3001.5331

pip3 install fastapi uvicorn aiohttp

fastapi → Web 框架
uvicorn → 启动 ASGI 服务器
aiohttp → 异步下载文件(比 requests 更适合异步)

定义 API 路由 (app/api.py)

from fastapi import APIRouter, HTTPException, Form
from fastapi.responses import JSONResponse
from app.services.downloader import download_file
from app.services.parser import parse_filerouter = APIRouter()@router.post("/app/fileParse")
async def parse_file_api(url: str = Form(...)):try:# 1. 下载文件local_path = await download_file(url)# 2. 解析文件apk_url = await parse_file(local_path)return {"apkUrl": apk_url}except Exception as e:raise HTTPException(status_code=500, detail=str(e))

下载逻辑 (app/services/downloader.py)

import aiohttp
import aiofiles
import tempfile
import os
import logginglogger = logging.getLogger(__name__)async def download_file(url: str) -> str:tmp_dir = tempfile.mkdtemp()local_path = os.path.join(tmp_dir, "test_file.file")async with aiohttp.ClientSession() as session:async with session.get(url) as resp:if resp.status != 200:raise Exception(f"下载失败: {resp.status}")logger.info("开始下载文件")async with aiofiles.open(local_path, 'wb') as f:while chunk := await resp.content.read(1024):await f.write(chunk)return local_path

解析逻辑 (app/services/parser.py)

import os
import subprocess
import logginglogger = logging.getLogger(__name__)async def parse_file(local_path: str) -> str:logger.info("开始解析文件")base_dir = os.path.dirname(os.path.abspath(__file__))bundletool_path = os.path.join(base_dir, "..", "..", "bundletool.jar")jks_path = os.path.join(base_dir, "..", "..", "debug.jks")dir_path = os.path.dirname(local_path)apk_dir_path = os.path.join(dir_path, "test_app.apks")cmd = ["java", "-jar", f"{bundletool_path}", "build-apks",f"--bundle={local_path}",f"--output={apk_dir_path}",f"--ks={jks_path}","--ks-pass=pass:1234567","--ks-key-alias=debug","--key-pass=pass:1234567"]result = subprocess.run(cmd, capture_output=True, text=True)if result.returncode == 0:logger.info(f"命令执行成功,returncode={result.returncode}")else:logger.error(f"命令执行失败,returncode={result.returncode}, stderr={result.stderr}")"""上传解析后的文件到s3,返回s3链接,或者直接返回解析后的文件和结果"""apk_url = "https://your-bucket.s3.amazonaws.com/fake-app.apk"return apk_url

FastAPI 入口 (app/main.py)

from fastapi import FastAPI
from app.api import routerapp = FastAPI(title="FILE Parser API")app.include_router(router, prefix="/v1")# 启动服务: uvicorn main:app --reload

启动服务

testmanzhang@loaclhost file_parse % source .venv/bin/activate    
(.venv) testmanzhang@loaclhost file_parse % 
(.venv) testmanzhang@loaclhost file_parse % 
(.venv) testmanzhang@loaclhost file_parse % uvicorn main:app --reload
INFO:     Will watch for changes in these directories: ['/Users/testmanzhang/PycharmProjects/file_parse']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [73816] using StatReload
INFO:     Started server process [73819]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     127.0.0.1:55102 - "GET /docs HTTP/1.1" 200 OK
INFO:     127.0.0.1:55102 - "GET /openapi.json HTTP/1.1" 200 OK

fastapi自带Swagger,地址为:

http://127.0.0.1:8000/docs

在这里插入图片描述
可以使用Swagger进行接口测试,填写参数(下载地址)后点击Execute
在这里插入图片描述

http://www.dtcms.com/a/415309.html

相关文章:

  • 深入解析 Redis 的两种持久化机制:RDB 与 AOF
  • 爱佳倍 北京网站软件外包公司是什么意思
  • SCNet平台—让AI更简单、更高效、更实用
  • 高流量网站设计菏泽网站开发公司
  • 做一个展示型网站要多少钱自己做本市网站
  • SSRF靶场环境命令执行靶场环境
  • 【数字孪生】02-数字孪生在各个领域的应用(1)
  • 网站字体样式重庆唐卡装饰口碑怎么样
  • wgcna 相关性热图中4个颜色 4个共表达模块 的模块基因是否都要做GO/KEGG分析”,核心取决于你的**研究目标和模块的生物学意义*
  • 什么是网站名称文件夹会展设计需要学什么
  • 第十六届蓝桥杯软件赛C组省赛C++题解(京津冀)
  • Spring Cloud 服务网关 Gateway 详解:微服务的 “统一入口” 实战
  • 基于 PyTorch 的模型测试与全局平均池化实践
  • 买软件网站建设福田祥菱v1单排
  • 江阴网站设计哪家好百度云用流量做网站
  • C++ 类型推导(第二部分)
  • C 内存布局
  • 编译Duckdb机器学习插件QuackML
  • 帝国cms仿站工具学网站建设 去那里
  • 《R for Data Science (2e)》免费中文翻译 (第9章) --- Layers(1)
  • 网站注册时间查询aspnet网站开发pdf
  • 企业管理说白了是干嘛的seo优化排名教程
  • 医院建设网站网页ui设计尺寸规范
  • 网站模板批量下载推广电话
  • 织梦网站如何做seo我的家乡网页设计模板
  • 平顶山哪里有做网站的公司dede后台网站主页
  • 客户做网站需要提供什么网站建设洽谈
  • Redis实战篇-登录校验
  • PostgreSQL数据类型怎么选才高效不踩坑?
  • 岳阳网站开发建设小程序模板消息推送规则