python+vue3内嵌html实现一个类似postman的api调试工具代码
代码语言:python
所属分类:其他
代码描述:python+vue3内嵌html实现一个类似postman的api调试工具代码
代码标签: python vue 内嵌 htm 类似 postman api 调试 工具 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import requests
import json
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse, JSONResponse
from pydantic import BaseModel
from typing import Any, Dict, Optional, List
# 1. FastAPI 应用实例
app = FastAPI(
title="API Debugger Pro",
description="A simple Postman-like API debugger built with FastAPI and Vue.js",
)
# 2. Pydantic 模型更新
# 更通用的键值对模型,可用于Header和Form
class KeyValueItem(BaseModel):
key: str
value: str
class ProxyRequest(BaseModel):
method: str
url: str
headers: Optional[List[KeyValueItem]] = []
# 新增字段以区分body类型
body_type: str = 'none' # 'none', 'json', 'form'
json_body: Optional[str] = None
form_body: Optional[List[KeyValueItem]] = []
# 3. HTML, CSS, 和 Vue.js 前端代码 (已更新)
HTML_TEMPLATE = """
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>API Debugger Pro</title>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue.global.3.2.37.js"></script>
<style>
:root {
--bg-color: #1a1a1a; --panel-color: #242424; --text-color: rgba(255, 255, 255, 0.87);
--primary-color: #646cff; --border-color: #535bf2; --input-bg: #1e1e1e;
--status-ok: #42d392; --status-error: #ff6961; --status-info: #ffc107;
}
*, *::before, *::after { box-sizing: border-box; }
body {
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
margin: 0; background-color: var(--bg-color); color: var(--text-color);
font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased;
}
#app { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; padding: 1rem; height: 100vh; }
.panel { background-color: var(--panel-color); padding: 1.5rem; border-radius: 8px; display: flex; flex-direction: column; gap: 1rem; overflow: auto; }
h2 { margin: 0 0 1rem 0; color: var(--primary-color); border-bottom: 1px solid var(--border-color); padding-bottom: 0.5rem; }
/* Request Panel Styles */
.url-group { display: flex; gap: 0.5rem; }
.method-select {
padding: 0.6em 1.2em; border-radius: 8px; border: 1px solid transparent; font-weight: 500;
background-color: var(--input-bg); cursor: pointer; transition: border-color 0.25s;
}
.url-input { flex-grow: 1; }
.input, .textarea, .method-select {
width: 100%; font-size: 1em; background-color: var(--input-bg); color: var(--text-color);
border: 1px solid #444; border-radius: 8px; padding: 0.6em 1.2em;
}
.textarea { min-height: 150px; resize: vertical; font-family: 'Courier New', Courier, monospace; }
.button {
border-radius: 8px; border: 1px solid transparent; padding: 0.6em 1.2em; font-size: 1em;
font-weight: 500; background-color: var(--primary-color); color: #fff;
.........完整代码请登录后点击上方下载按钮下载查看















网友评论0