引言

Flask 是一个简单且十分强大的Python web 框架。它被称为微框架,“微”并不是意味着把整个Web应用放入到一个Python文件,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或 Web服务。因此flask能很方便构建一个web服务,给外部也可以叫做客户端提供web服务,针对flask框架这种特点我们可以很容易构建API接口,供客户端访问。

Flask接口开发示例

首先安装需要的Flask模块,如果你的环境已经安装了pip则键入:pip install flask即可安装完成

1.1 构建GET请求方法的接口

在Pycharm中新建py文件,编辑如下代码

# -*- coding: utf-8 -*-
import flask,json
import time server = flask.Flask(__name__) # 创建一个服务,把当前这个python文件当做一个服务 @server.route('/VIID/System/Time', methods=['get']) # @server.route()可以将普通函数转变为服务、接口的路径、请求方式,如果不写methods则默认get方法
def Time():
'''查询字符串:无,消息体:无,返回结果:SystemTime'''
response_data = {
"SystemTimeObject": {
"VIIDServerID": "123",
"TimeMode": "1",
"LocalTime": time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())),
}
}
return json.dumps(response_data, ensure_ascii=False) if __name__ == '__main__':
server.run(debug=True, port=5000, host='10.82.25.11') # 指定访问端口、host

 然后运行该py文件,则该文件运行在本地就是一个web服务,用浏览器或者postman尝试访问该服务的URL即可

浏览器访问:

postman发请求访问:

浏览器或者postman请求完成后,在Pycharm的输出栏会输出如下:

其它的请求如POST、PUT、DELETE等方法,在methods参数中指明即可,不过POST、PUT、DELETE等方法不能由浏览器直接访问,因为浏览器默认访问时是get方法,可以用postman按指定的方法发请求

1.2 获取带json格式请求体的接口

有时客户端发送的请求是带json格式的,这时需要获取请求的json,编辑代码如下:

@server.route('/data',methods=['post'])
def post_json():
if flask.request.is_json:
print(flask.request.json)
name = flask.request.json.get('name') # 获取json请求体的第一个参数的值
age = flask.request.json.get('age') # 获取json请求体的第二个参数的值
data = {'name':name,'age':age}
return json.dumps(data,ensure_ascii=False)
else:
return json.dumps({'msg':'请传json格式参数'},ensure_ascii=False)

使用postman作为客户端发送带json请求体的请求,如下图:

1.3 获取get请求中发送的参数

flask提供的方法是:

 value = flask.request.args.get('name')           # 获取get请求参数name的值

1.4 构建动态URL以及响应体的重定向

很多时候,客户端请求的url是变化的,也就是带有动态参数的,flask也是可以轻松的构建提供动态参数的url资源服务并重定向响应体,代码如下:

# -*- coding: utf-8 -*-
import flask,json
from flask import url_for,redirect server = flask.Flask(__name__) # 创建一个服务,把当前这个python文件当做一个服务 @server.route('/data')
def data(): # 返回data
data = {
'VideoSliceInfoObject': {
'VideoID': 'esse elit',
'AudioCodeFormat': 'commodo'
}
}
return json.dumps(data, ensure_ascii=False) @server.route('/data/<ID>/Info', methods=['post'])
def data_redirect(ID):
return redirect(url_for('data', guest=ID)) if __name__ == '__main__':
server.run(debug=True, port=5000, host='10.82.25.11') # 指定访问端口、host

后面无论postman或者客户端发送的url中的ID参数是啥,都可以响应

1.5 重新构建响应头和响应状态码

有时在与第三方系统对接时,需要返回携带响应头消息和指定的响应状态码,在flask中也是可以构建自定义的响应消息的

# -*- coding: utf-8 -*-
import flask,json server = flask.Flask(__name__) # 创建一个服务,把当前这个python文件当做一个服务 @server.route('/data',methods=['post'])
def post_json():
if flask.request.is_json:
print(flask.request.json)
name = flask.request.json.get('name') # 获取json请求体的第一个参数的值
age = flask.request.json.get('age') # 获取json请求体的第二个参数的值
data = {'name':name,'age':age}
# 构建响应头域和状态码
resp = flask.make_response(json.dumps(data, ensure_ascii=False))
resp.status = "666"
resp.headers[
"python"] = "python flask"
return resp
else:
return json.dumps({'msg':'请传json格式参数'},ensure_ascii=False) if __name__ == '__main__':
server.run(debug=True, port=5000, host='10.82.25.11') # 指定访问端口、host

运行该py文件,在postman中发送请求,查看响应信息,如下图,变成的我们自定义设置的响应头和状态码

这样我们就完全自定义了响应的头和状态码

Python flask模块接口开发学习总结的更多相关文章

  1. python——flask常见接口开发(简单案例)

    python——flask常见接口开发(简单案例)原创 大蛇王 发布于2019-01-24 11:34:06 阅读数 5208 收藏展开 版本:python3.5+ 模块:flask 目标:开发一个只 ...

  2. 基于Python的WEB接口开发与自动化测试 pdf(内含书签)

    基于Python的WEB接口开发与自动化测试 目录 目 录O V目 录章 Python 学习必知 ................................................... ...

  3. [ Python ] Flask 基于 Web开发 大型程序的结构实例解析

    作为一个编程入门新手,Flask是我接触到的第一个Web框架.想要深入学习,就从<FlaskWeb开发:基于Python的Web应用开发实战>这本书入手,本书由于是翻译过来的中文版,理解起 ...

  4. 学习python-20191230(1)-Python Flask高级编程开发鱼书_第04章_应用、蓝图与视图函数

    视频06: 1.自动导包快捷键——默认为alt + enter 键组合          选中的字符由小写变为大写——Ctrl + Shift + U键组合 2.DataRequired()——防止用 ...

  5. 学习python-20191217(1)-Python Flask高级编程开发鱼书_第04章_应用、蓝图与视图函数

    视频01: flask框架:最上层是app,它就像一个插线板一样,比如可以插入蓝图,还可以插入其他各种flask插件. 每个蓝图又可以插入很多视图函数,并可指定静态文件夹和模板文件夹. 好的代码结构, ...

  6. 学习python-20191208(1)-Python Flask高级编程开发鱼书_第03章_数据与flask路由

    视频01: 略...... ———————————————————————————————————————————————————————————— 视频02: 搜索需要外部数据源,也就是需要外部的A ...

  7. 学习python-20191208(2)-Python Flask高级编程开发鱼书_第03章_数据与flask路由

    视频06: 定义静态方法的两种方式: 1.在方法上方加上装饰@staticmethod 2.在方法上方加上装饰@classmethod  方法中要加参数cls  如:def search_by_isb ...

  8. Python Flask模块

    模块是一个包含响应文本的文件,其中包含占用位变量表示的动态部分,其具体值只在请求的上下文中才知道.使用真实值替换变量,再返回最终得到的响应字符串,这一过程称为渲染.为了渲染模块,Flask使用一个名为 ...

  9. Flask-RESTful接口开发学习笔记一:实现简单的GET请求

    1.首先安装需要依赖的第三方包: (1):Flask (2):Flask-RESTful 如何安装就不在啰嗦,pip也好,下载到本地再安装也好,看你随意. 2.我们先实现GET请求. Q:什么是GET ...

随机推荐

  1. MySQL Hardware--FIO压测

    FIO参数 .txt 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb direct= 测试过程绕过机器自带的buffer,使测试结果更真实 rw= ...

  2. 【Bug】MQ消息与事务提交

    项目联调期间,遇到个bug,涉及MQ消息传递和事务提交时间问题,简单记录下. 背景 审核服务(审核创建项目),点击审核通过,后台代码会在提交事务前发送MQ消息(该消息由项目管理服务消费),发送成功后, ...

  3. ORA-01031:insufficient privileges 解决方法

    使用sys或system帐号登录plSql时,提示ORA-01031:insufficient privileges 错误.使用其他的帐号能正常登录,在cmd命令中用system帐号也是可以正常登录. ...

  4. [牛客网 -leetcode在线编程 -02] minimum-depth-of-binary-tree -树的最短深度

    题目描述 题目描述 Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along ...

  5. Java volatile关键字实现原理

    场景引入 可见性问题 先来看一张图: 上面的图,是简化版的Java内存模型,一个线程有自己的工作内存,同时还有一个共享的主内存. 线程1和线程2读取数据data时,先从主内存里加载data变量的值到工 ...

  6. SVM:从数学上分析为什么优化cost function会产生大距离(margin)分类器

    向量内积 uTv = vTu为两个二维向量的内积,它等于p*||u||(其中p为向量v在向量u上的投影长度,是有+/-之分的,||u||为向量u的长度也称为范数),它是一个实数(是一个标量). 如上图 ...

  7. 单片机开发之C语言编程基本规范

    为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范.本标准规定了程序设计人员进行程序设计时必须遵循的规范.本规范主要针对单片机编程语言和08编译器而言,包括排版.注释.命名.变量 ...

  8. Spring asm

    Spring 获取类的详细信息,以及方法时候,是通过asm 字节码进行获取的,在平时中我们也可以依赖spring 进行处理我们的类 //可以获取类的详细信息,比如父类上谁,类上面的注解 ,是否上接口 ...

  9. 任晓蕊 2019-2020-1 20199302《Linux内核原理与分析》第四周作业

    实验内容 在实验楼的环境中敲入命令 cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img ...

  10. cube.js 学习(四)cube.js cube 说明

      cube 是cube.js data schema 的核心,里面定义了生成sql 的说明 一个比较全的schema 例子 cube(`Users`, { sql: `select * from u ...