背景:

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

思路:

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

app.py,启动程序

  1. from flask import Flask, render_template,request
  2. from flask_bootstrap import Bootstrap
  3. from works import *
  4. from myForm import ReqForm
  5.  
  6. app = Flask(__name__)
  7. app.config.from_object('config')
  8. Bootstrap(app)
  9.  
  10. @app.route("/", methods=['GET', 'POST'])
  11. def index():
  12. form = ReqForm()
  13.  
  14. if request.method == "POST":
  15. result = getReq(request.form.get( "url", "null"))
  16. return result
  17.  
  18. return render_template("index.html", form=form)
  19.  
  20. if __name__ == "__main__":
  21. app.run(host='0.0.0.0',debug=True)

form.py 表单对象

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

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

  1. {% block head %}
  2. <title>test</title>
  3. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  4. <link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">
  5. <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
  6. {% endblock %}
  7.  
  8. {% import "bootstrap/wtf.html" as wtf %}
  9.  
  10. {% block page_content %}
  11. <div class="container">
  12. <div class="row clearfix">
  13. <div class="col-md-6 column">
  14. <form class="form" method="post">
  15. {{form.hidden_tag()}}
  16. {{wtf.form_field(form.method)}}
  17. {{wtf.form_field(form.url)}}
  18.  
  19. {{wtf.form_field(form.reqBody)}}
  20. {{wtf.form_field(form.submit)}}
  21.  
  22. </form>
  23. </div>
  24. <div class="col-md-6 column">
  25. <h3>Result:</h3>
  26. <textarea id="textarea" class="form-control text-body" rows="21">{{result}}</textarea>
  27. </div>
  28. </div>
  29. </div>
  30. {% endblock %}
  31.  
  32. {% block scripts %}
  33. <script src="{{ url_for('static', filename='js/jquery-3.2.1.min.js') }}"></script>
  34. <script type=text/javascript>
  35. var $SCRIPT_ROOT = {{request.script_root|tojson|safe}};
  36. </script>
  37. <script type="text/javascript">
  38.  
  39. $(document).ready(function(){
  40. $("#submit").click(function(){
  41. $.post("/",
  42. {
  43. url: $( "#url" ).val(),
  44. },
  45. function(data,status){
  46. $( "#textarea" ).text(data);
  47. }
  48. );
  49. return false
  50. });
  51. });
  52. </script>
  53. {% endblock %}

work.py,实际接口的处理

  1. import requests
  2. import json
  3.  
  4. def getReq(url):
  5. r = requests.get(url)
  6. 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. Luogu 1006 传纸条 / NOIP 2008 传纸条(动态规划)

    Luogu 1006 传纸条 / NOIP 2008 传纸条(动态规划) Description 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m ...

  2. js中的数组排序

    js数组冒泡排序,快速排序的原理以及实现   冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位 ...

  3. linux+windows mysql导入导出sql文件

    linux下 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1.导出数据和表结构:mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql# ...

  4. ibatis 参数和结果的映射处理

    SqlMapClient对象 这个对象是iBatis操作数据库的接口(执行CRUD等操作),它也可以执行事务管理等操作.这个类是我们使用iBATIS的最主要的类.它是线程安全的.通常,将它定义为单例. ...

  5. 【nodejs】nodejs 的linux安装(转)

    (一) 编译好的文件 简单说就是解压后,在bin文件夹中已经存在node以及npm,如果你进入到对应文件的中执行命令行一点问题都没有,不过不是全局的,所以将这个设置为全局就好了. ./node -v ...

  6. ArrayList——源码探究

    摘要 ArrayList 是Java中常用的一个集合类,其继承自AbstractList并实现了List 构造器 ArrayList 提供了三个构造器,分别是 含参构造器-1 // 含参构造器-1 / ...

  7. 一种轻便且灵活的js模板的思路

    一种轻便且灵活的js模板的思路 项目地址:https://github.com/j20041426/template 思路背景 在Vue.React.Angular等大前端框架异军突起的今天,写前端时 ...

  8. Python爬虫番外篇之关于登录

    常见的登录方式有以下两种: 查看登录页面,csrf,cookie;授权:cookie 直接发送post请求,获取cookie 上面只是简单的描述,下面是详细的针对两种登录方式的时候爬虫的处理方法 第一 ...

  9. C#使用HttpClient获取Location

    之前使用HttpWebRequest的时候,只需要设置HttpWebRequest对象的AllowAutoRedirect属性值为false即可在Respomse的Header中获取Location: ...

  10. NYOJ--86--set.find()--找球号(一)

    /* Name: NYOJ--86--找球号(一) Date: 20/04/17 14:45 Description: 理想很美好,现实很残酷,准备用字符串水过,结果TLE了 ╮(╯▽╰)╭ */ # ...