文章目录

  • 前言
  • 本地搭建flask服务
    • 设置路由
    • 设置请求方法和参数
  • 如何搭建一个restful接口的服务

前言


flask是什么?众所周知 java有 spring 全家桶和sparkjava,Python有Django和flask,Django属于大而全的框架,flask是一个轻量级的web服务框架,结构简单但功能强大,像一把尼泊尔军刀一样,非常适合我们在平时工作中开发一些简单的工具,如简单的自动化测试平台,今天一起来了解下flask在web服务中的应用。

本地搭建flask服务

设置路由

# 导包flask
from flask import Flask# 实例化一个Flask的对象
app = Flask(__name__)# 调用app.route来指定接口的路由,/表示根目录
@app.route("/login")
def flask_demo(): # flask_demo为你的接口名称return "login successful" # 接口的返回值if __name__ == '__main__':app.run(debug=True) # app.run()启动服务,并打开debug模式设置为True,热处理更新控制台打印如下
* Serving Flask app 'flask_fx' (lazy loading)* Environment: productionWARNING: This is a development server. Do not use it in a production deployment.Use a production WSGI server instead.* Debug mode: on* Restarting with stat* Debugger is active!* Debugger PIN: 536-367-075* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [04/Dec/2021 17:01:33] "GET /testcase HTTP/1.1" 404 -
127.0.0.1 - - [04/Dec/2021 17:01:34] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [04/Dec/2021 17:01:52] "GET /LOGIN HTTP/1.1" 404 -
127.0.0.1 - - [04/Dec/2021 17:02:02] "GET /login HTTP/1.1" 200 -* Detected change in 'E:\\code_software\\Python Charm\\Python Project\\flask_demo2\\flask_fx.py', reloading* Restarting with stat* Debugger is active!* Debugger PIN: 536-367-075* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)* Detected change in 'E:\\code_software\\Python Charm\\Python Project\\flask_demo2\\flask_fx.py', reloading* Restarting with stat* Debugger is active!* Debugger PIN: 536-367-075* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

其中 http://127.0.0.1:5000/ 为flask服务地址
浏览器访问flask服务,如下图

设置请求方法和参数

# 导包flask
from flask import Flask, request# 实例化一个Flask的对象
app = Flask(__name__)# 调用app.route来指定接口的路由,/表示根目录
# methods指定访问接口的请求的方法,必须传入列表,否则报错
@app.route("/login", methods=["get"])
def flask_demo():  # flask_demo为你的接口名称user = request.args.get("user")return f"login successful user={user}"  # 接口的返回值@app.route("/home", methods=["post"])
def flask_demo2():  # flask_demo为你的接口名称user = request.json.get("user")  # 接受post请求的json数据return {f"message": "login successful", "user": f"{user}"}  # 接口的返回值if __name__ == '__main__':app.run(debug=True)  # app.run()启动服务,并打开debug模式设置为True,热处理更新

使用浏览器并带参数访问flask_demo接口

访问flask_demo2

   def test_flask_fx():url = "http://127.0.0.1:5000/home"data = {"user": "leo",}re = requests.post(url=url, json=data)print(re.text)assert re.status_code == 200控制台信息:
PASSED                            [100%]{"message": "login successful", "user": "leo"
}

知识点一:methods 可以用来指定请求方法,但必须是列表
知识点二:requests.args来接收get请求的params参数,requests.form用来接收post的data参数,requests .json用来接收post请求体中的json数据

如何搭建一个restful接口的服务

非restful接口

@app.route("/testcase", methods=["get", "post", "put", "delete"])
def test_case():if request.method == "get":passelif request.method == "post":passelif request.method == "put":passelif request.method == "delete":passif __name__ == '__main__':app.run()

按照上面的剧情发展我们写的接口大概就会成为这样,但是如果通过判断method来进行业务逻辑的编写,会使得代码很耦合,违背了高内聚,低耦合的设计理念。那有没有一种方法可以直接编写get、post、delete、put接口呢,既符合接口设计规范,又不互相耦合,这里我们引入了flask的第三方库 flask_restful

安装flask_restful

pip install flask_restful
from flask_restful import Api, Resource  # 导入flask_restful的两个重要的方法
from flask import Flaskfrom logger_until import loggerapp = Flask(__name__)  # 实例化Flask对象
api = Api(app)  # 将Flask的对象实例塞进Api中,将flask和flask_restful进行绑定class TestCaseServer(Resource):def get(self):logger.info(" get method ")return {"errcode": 0000, "message": " get method "}def post(self):logger.info(" post method ")return {"errcode": 0000, "message": " post method "}def delete(self):logger.info(" delete method ")return {"errcode": 0000, "message": " delete method "}def put(self):logger.info(" put method ")return {"errcode": 0000, "message": " put method "}# 将继承了resource的接口定义类添加到api中,并定义接口的路由地址
api.add_resource(TestCaseServer, "/testcase")if __name__ == '__main__':app.run(debug=True)

上面就是按照restful规范定义的后台接口

下面为测试代码

import requestsclass TestCase:def setup_class(self):self.url = "http://127.0.0.1:5000/testcase"def teardown_class(self):passdef test_get(self):re = requests.get(url=self.url)print(re.text)# assert re.status_code == 200def test_post(self):re = requests.post(url=self.url)assert re.status_code == 200def test_put(self):re = requests.put(url=self.url)assert re.status_code == 200def test_delete(self):re = requests.delete(url=self.url)assert re.status_code == 200


接口框架已搭建成功,再需要根据业务规则与数据库或其他业务模块进行交互

下一节链接: flask与数据mysql进行交互.

flask之搭建web服务相关推荐

  1. 使用 docker 搭建 web 服务环境

    本文目的 做过开发的人对开发环境的安装.配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的.对于 PHP 的 Web 开发来说,开发环境至少要有一个 Web 服务器(如 Apac ...

  2. 新手如何使用docker搭建web服务环境

    做过开发的人对开发环境的安装.配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的.对于 PHP 的 Web 开发来说,开发环境至少要有一个 Web 服务器(如 Apache.Ng ...

  3. 普歌-腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断、验证验证码的正确性(下)

    普歌-结合腾讯云短信服务+node搭建一个简单的发送短信web小项目 涉及技术: 腾讯云服务 后端服务:node+express 前端搭建:html+js 前言:本来这篇博客应该很早就发了,中间有一些 ...

  4. python flask 快速搭建 WEB 实战

    python flask 快速搭建 WEB 实战 tags: flask 文章目录 python flask 快速搭建 WEB 实战 1. app.py配置首页 2. views.py配置首页 3. ...

  5. tomcat搭建web服务,lrc文件下载

    对于我这个开始学.net的人来说,对tomcat所知甚少.如今在Android练习中,需要用tomcat搭建web服务,并提供文件下载.视频中老师一带而过,我那个郁闷啊.没有办法,自己倒持一下,写这篇 ...

  6. Python教程三:使用Flask搭建web服务

    教程二:使用Aestate操作数据库 Python教程二:使用Aestate操作数据库_Cx_轩的博客-CSDN博客​​​​​​ ----------------------------------- ...

  7. RHEL 5服务篇—使用Apache搭建web服务(四)部署AWStats网站分析系统

    在httpd服务器的访问日志文件access_log中,记录了大量的客户机访问信息,通过分析这些信息,可以及时了解web站点的访问情况.但是由于access_log文件记录的信息太多,查看起来很不方便 ...

  8. RHEL 5服务篇—使用Apache搭建Web服务(一)

    安装Apache服务以及了解相关的配置文件 在当今的互联网中常用的搭建web服务器的方法有两种,一种是IIS.一种是Apache.大家都知道IIS是微软的产品,只支持在windows系统上使用.那么我 ...

  9. 使用Golang搭建web服务

    如何用golang搭建一个web服务呢?菜鸟官网的go web编程教程已经介绍了web服务器的工作原理,这里就不赘述了. 我们先看个例子:http.go package mainimport (&qu ...

最新文章

  1. [转] React Hot Loader 3 beta 升级指南
  2. java 短路判断_随笔 | 奇淫技巧 | Java:记 return 和短路运算符的妙用
  3. Linux command: dos2unix
  4. idea gui插件_给IDEA换个酷炫的主题,这个有点哇塞啊!
  5. ubuntu安装python3.6_Ubuntu16.04安装python3.6.5步骤详解
  6. 使用POI生成Excel文件,可以自动调整excel列宽
  7. 如何在不重新加载页面的情况下修改URL?
  8. Unable to add window -- token android.os.BinderProxy---Android原生开发工作笔记142
  9. 什么叫“职业年金”,与养老保险有什么关系?
  10. c++字符串string操作全解
  11. 2021全国研究生数学建模竞赛C题思路
  12. ai钢笔工具怎么描线_AI: 如何用钢笔工具画曲线
  13. MzTreeView(梅花雪)
  14. One Pixel Attack(对抗攻击) —— 使用差分进化算法寻找最优解
  15. nRF 扫描条件过滤做法
  16. 浅谈单线程的Redis快的原因是什么
  17. 第六感38只19.9/吹风机29.9/长虹电暖器69/按摩护腰垫39/情侣卫衣54.9
  18. 模糊图像的倒谱matlab,基于倒谱分析方法的离焦模糊图像特征鉴别
  19. 二叉搜索树——插入、查找、删除
  20. can't create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied)

热门文章

  1. 用EVE-NG平台做的思科传统防火墙的基本实验
  2. ShareSDK for Flutter
  3. CSAPP-Revision-ch03(三)
  4. java extract iso_sacd iso提取工具_sacd iso提取工具(sacd extract GUI)下载 v1.5.0.1免费版 - 121下载站...
  5. 数据结构课程设计 班级通讯录
  6. CUDA out of memory.(已解决)+Windows和Linux查看占用显存的程序
  7. 8-zookeeper算法基础(尚硅谷学习笔记)
  8. MB1C 501无订单收货报错解决
  9. Linux的基本学习(十)——账号管理与ACL权限设置
  10. linux 16.04桌面系统,ubuntu16.04 server 安装经典桌面环境 Gnome 桌面