栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

不需要web服务器,如何构建一个可以内部跨域的http服务(Vue+Flask)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

不需要web服务器,如何构建一个可以内部跨域的http服务(Vue+Flask)

写在前面
我的需求:
  • 一个很老的项目,中游服务,webservice接口,需要测试,没有页面,需要我写一个小工具来测试,我准备用一个web来实现。
我需要解决的问题:
  • 这个小工具其实类似测试工具,soup UI或者postman,需要实现以下功能:
    • 满足跨域请求,尽可能的轻量。
    • 满足发送xml和json作为报文请求
    • 可以做简单的自动化压力测试
    • 可以存储所有的的接口报文信息作为发送请求
    • 可以修改设置请求url,选择存在的url路径
    • 可以展示少量的请求报文和响应报文历史数据
    • 做好的工具不需要环境可以在机器上直接运行,类似windows上的*.exe
我是是这样解决的:
  • 在技术上,涉及到的技术栈: Vue + Flask,主要是轻量
  • 数据没有持久化,因为也没有多少数据,只是简单的使用
  • 前后端分离的方式开发,打包方式:前端编译好直接放到后端的指定文件夹下,通过python的PyInstaller打包为exe
  • 直接运行exe就会在window发布为一个服务。不需要部署。
需要注意的问题
  • 前后端的整合
  • 使用PyInstaller的打包问题
  • 需要知道一点Vue和python.

人生两苦,想要却不得,拥有却失去。 ----- 烽火戏诸侯《雪中悍刀行》


开发环境准备

这里不多讲,这是我的版本:

前端
PS > npm -v
6.12.1
PS > node -v
v12.13.1
PS > vue  -V
3.7.0
后端
PS > python -V
Python 3.9.0
PS > pip -V       
pip 20.2.3 from d:pythonpython310libsite-packagespip (python 3.9)
PS > PyInstaller -v
4.7

前端把需要测试的接口地址,报文通过axios 发送给后端Flask服务,Flask服务通过 requests 模块实现测试

测试工具功能:
xml,json 格式的报文发送,支持http,soap协议 的方式
支持请求报文路径自定义及相关配置
支持测试接口历史的查看(少量)
支持简单压力测试,自定义时间间隔,轮询调用接口方式
获取报文
二、编码 后端编码

后端很简单,需要注意的是,设置静态资源的加载路径,以及设置跨域

from flask import Flask, jsonify,request,render_template
from flask_cors import CORS  #跨域问题
import requests
import time


# configuration
DEBUG = True

# instantiate the app
app = Flask(__name__,static_folder = "./dist/static", template_folder = "./dist")
app.config.from_object(__name__)


# enable CORS
CORS(app, resources={r'
  padding: 0px;
  
  margin: 0px;
  
  height: 100%;
}

.el-select .el-input {
  width: 100%;
}
.input-with-select .el-input-group__prepend {
  background-color: #fff;
}
.main-up-class {
  width: 1000px;
}
.http-w {
  width: 20px;
}
.search-class {
  width: 1000px;
  height: 90px;
}
.search-class-up {
  margin: 10px;
  display: flex;
  justify-content: space-between;
}
.search-class-next {
  margin: 10px;
}
.active-class {
  margin: 10px;
}
.context-class {
  display: flex;
  justify-content: space-between;
  height: 405px;
}
.context-card-class {
  height: 100%;
  width: 100%;
  margin: 5px;
}
.el-card__header {
  padding: 5px 6px !important;
}
.el-card__body {
  padding: 1px !important;
}
.el-textarea__inner {
  resize: none !important;
}
.main-class {
  display: flex !important;
  justify-content: center !important;
  border-radius: 5px;

}
pre,
code {
  font-size: 0.85em;
  font-family: Consolas, Inconsolata, Courier, monospace;
}

code {
  margin: 0 0.15em;
  padding: 0 0.3em;
  white-space: pre-wrap;
  border: 1px solid #eaeaea;
  background-color: #f8f8f8;
  border-radius: 3px;
  display: inline; 
}

pre {
  font-size: 1em;
  line-height: 1em;
}

pre code {
  white-space: pre;
  overflow: auto; 
  border-radius: 3px;
  border: 1px solid #ccc;
  padding: 0.5em 0.7em;
  display: block !important; 
}


.markdown-here-wrapper[data-md-url*="wordpress."] code span {
  font: inherit;
}


.markdown-here-wrapper[data-md-url*="wordpress."] pre {
  background-color: transparent;
}
.input-with-select-add{
  display: flex !important;
  justify-content: center !important;
  margin: 10px;
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656355.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号