背景:

对于业务测试来说,有一些基础业务接口是需要经常调用的,如根据userId查询某人的信息,修改某人的xx属性,一般的接口都有验签(或者说token)机制,使用postman等工具的话,也是需要去自定义解决的,因此决定写个页面更简易化

思路:

为了快速实现功能,决定采用python的flask框架,使用了flask-wtf(form表单),flask-bootstrap(美化界面),ajax

app.py,启动程序

from flask import Flask, render_template,request
from flask_bootstrap import Bootstrap
from works import *
from myForm import ReqForm app = Flask(__name__)
app.config.from_object('config')
Bootstrap(app) @app.route("/", methods=['GET', 'POST'])
def index():
form = ReqForm() if request.method == "POST":
result = getReq(request.form.get( "url", "null"))
return result return render_template("index.html", form=form) if __name__ == "__main__":
app.run(host='0.0.0.0',debug=True)

form.py 表单对象

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, TextAreaField, SelectField
from wtforms.validators import DataRequired class ReqForm(FlaskForm):
method = SelectField(u'Method', choices=[('get', 'GET'), ('post', 'POST'), ('delete', 'DELETE')])
url = StringField('Please enter the URL: ', validators=[DataRequired()])
reqBody = TextAreaField("Request Body: ",render_kw={'class':'text-body','rows':15})
submit = SubmitField("Send")

index.html,页面展示层,用来渲染页面的

{% block head %}
<title>test</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
{% endblock %} {% import "bootstrap/wtf.html" as wtf %} {% block page_content %}
<div class="container">
<div class="row clearfix">
<div class="col-md-6 column">
<form class="form" method="post">
{{form.hidden_tag()}}
{{wtf.form_field(form.method)}}
{{wtf.form_field(form.url)}} {{wtf.form_field(form.reqBody)}}
{{wtf.form_field(form.submit)}} </form>
</div>
<div class="col-md-6 column">
<h3>Result:</h3>
<textarea id="textarea" class="form-control text-body" rows="21">{{result}}</textarea>
</div>
</div>
</div>
{% endblock %} {% block scripts %}
<script src="{{ url_for('static', filename='js/jquery-3.2.1.min.js') }}"></script>
<script type=text/javascript>
var $SCRIPT_ROOT = {{request.script_root|tojson|safe}};
</script>
<script type="text/javascript"> $(document).ready(function(){
$("#submit").click(function(){
$.post("/",
{
url: $( "#url" ).val(),
},
function(data,status){
$( "#textarea" ).text(data);
}
);
return false
});
});
</script>
{% endblock %}

work.py,实际接口的处理

import requests
import json def getReq(url):
r = requests.get(url)
return json.dumps(json.loads(r.text), indent=4, sort_keys=False, ensure_ascii=False)

大概流程:

app.py启动后,通过实例化一个form表单,然后通过render_template指向到index.html,页面展示OK,页面上的submit绑定了js事件,将页面上的元素组装成post请求指向后台的地址,后台通过request获取到前端页面的值后,通过work.py的业务处理后return值返回前端,再展示会前端,这块使用了ajax

最终页面如下:

可以根据业务处理成如下:

常用业务接口界面化 in python flask的更多相关文章

  1. Flask常用实列化参数

    Flask中实列化配置: app = Flask( __name__, template_folder=’temp’ , ...... ) >template_folder = "te ...

  2. Python Flask 实现移动端应用接口(API)

    引言 目前,Web 应用已形成一种趋势:业务逻辑被越来越多地移到客户端,逐渐完善为一种称为富互联网应用(RIA,rich Internet application)的架构.在 RIA 中,服务器的主要 ...

  3. Docker容器化部署Python应用

    1. 简介 Docker是目前主流IT公司广泛接受和使用的,用于构建.管理和保护它们应用程序的工具. 容器,例如Docker允许开发人员在单个操作系统上隔离和运行多个应用程序,而不是为服务器上的每个应 ...

  4. Android业务组件化之子模块SubModule的拆分以及它们之间的路由Router实现

    前言: 前面分析了APP的现状以及业务组件化的一些探讨(Android业务组件化之现状分析与探讨),以及通信的桥梁Scheme的使用(Android业务组件化之URL Scheme使用),今天重点来聊 ...

  5. 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript

    常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用 ...

  6. python Flask

    python Flask Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请 ...

  7. 个人学期总结及Python+Flask+MysqL的web建设技术过程

    一个学期即将过去,我们也迎来了2018年.这个学期,首次接触了web网站开发建设,不仅是这门课程,还有另外一门用idea的gradle框架来制作网页. 很显然,用python语言的flask框架更加简 ...

  8. 知了课堂 Python Flask零基础 笔记整理

    目录 起步 安装Python2.7: Python虚拟环境介绍与安装: pip安装flask: 认识url: URL详解 web服务器和应用服务器以及web应用框架: Flask 第一个flask程序 ...

  9. Python Flask Web 框架入门

    Python Flask 目录 本文主要借鉴 letiantian 的文章 http://www.letiantian.me/learn-flask/ 一.简介 二.安装 三.初始化Flask 四.获 ...

随机推荐

  1. java窗口按钮设置五个方向

    java窗口按钮设置五个方向 代码如下: package Day08; import java.awt.BorderLayout;import javax.swing.JButton;import j ...

  2. php 批量进行复制文件

    php 批量进行复制文件 1.前言 目标:php批量进行复制指定的目录文件夹下所有文件复制到另一个文件夹下 所使用的的php函数:is_dir,opendir,readdir,scandir,mkdi ...

  3. Python之MRO及其C3算法

    [<class '__main__.B'>, <class '__main__.A'>, <class 'object'>] (<class '__main_ ...

  4. Xamarin Android绑定微信SDK

    现在几乎所有的APP都集成了向微博,微信等社交平台分享的功能.这些社交平台官方也提供了SDK让开发者使用,对于Android和IOS平台而言,只需要下载官方的SDK,按照官方说明文档进行集成就可以轻松 ...

  5. 基于.NET CORE微服务框架 -谈谈surging的服务容错降级

    一.前言 对于不久开源的surging受到不少.net同学的青睐,也受到.net core学习小组的关注,邀请加入.NET China Foundation以方便国内.net core开源项目的推广, ...

  6. 关于MUI集成微信分享遇到的坑

    今天聊一下MUI这个框架吧! 首先,用这个框架也有很长一段时间了,项目不同,涉及到的功能也有不同,之前没有涉及到微信分享相关的内容!今天,遇到了,也解决了,分享出来. 下面是手顺: 1.分享的代码是参 ...

  7. 运行Jmeter.bat出错:Not able to find java executor or version. Please check your installation. errorlevel=2

    下载JMeter. 解压后运行Jmeter.bat竟然报错了. 解决办法整理: 方法1: 1.检查JDK环境变量配置: ①系统变量→新增JAVA_HOME. 变量值填写jdk的安装目录(本人是 E:\ ...

  8. 【JAVASCRIPT】React学习-巧用 props 的 children 属性实现内容填充

    背景 平常写组件,经常遇到需要获取内容放入组件内部的情形. 实现方法 我们有两种实现方式 1. 自定义 props render 的时候通过获取 this.props.content 填充到组件内部 ...

  9. 分享 android 源码

    Android精选源码 UI框架 QSkinLoader换肤框架 一款优雅的中国风Android笔记源码 ListView.RecyclerView两种方式实现聊天界面 android仿滴滴时间选择控 ...

  10. windows安装设备的驱动程序软件遇…

    问题描述: 有时候我们在使用一些设备的时候需要获取电脑的驱动.安装方式一共有三种: 第一种是让系统自动更新和安装. 第二种是打开"资源管理器"选择指定文件夹路径更新. 第三种是使用 ...