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