结合FastAPI将多脚本DNA序列工具封装为多选项WebAPI
解决方案
1. 核心调整逻辑
原命令行模式是从sys.argv读取输入,FastAPI场景下直接从接口请求参数获取输入即可。建议每个工具对应一个独立接口,更符合你给出的调用示例规范。不要把Sequence实例初始化放在全局位置,避免并发请求时参数互相覆盖。
2. 完整调整后代码
from clases.sequence import Sequence from clases.read_file import Read_file from fastapi import FastAPI app = FastAPI() # 长度计算接口,完全匹配你给出的调用示例 @app.get("/length") def calculate_length(input: str): # 用请求传入的input参数初始化Sequence,替换原有的sys.argv读取逻辑 dna = Sequence(input) return {"result": dna.length()} # 其他工具可以按照相同逻辑新增接口,比如GC含量计算示例 @app.get("/gc_content") def calculate_gc(input: str): dna = Sequence(input) # 假设Sequence类已实现gc()方法,直接调用返回即可 return {"result": dna.gc()} # 保留原命令行执行逻辑,加入口判断避免FastAPI启动时自动执行,方便本地调试 if __name__ == "__main__": import sys if len(sys.argv) > 1: user_input = sys.argv[1] dna = Sequence(user_input) print("Length:") print(dna.length()) print("\n")
3. 测试验证方式
- 启动服务:执行
uvicorn main:app --reload - 访问测试:浏览器输入
http://127.0.0.1:8000/length?input=TATA,即可得到返回结果{"result":4} - 也可以直接访问FastAPI自带的接口调试页面
http://127.0.0.1:8000/docs,可视化传参测试所有接口
内容的提问来源于stack exchange,提问作者Manolo Dominguez Becerra
相关产品推荐
相关产品推荐

