iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python Flask实现restful api service
  • 779
分享到

python Flask实现restful api service

Flaskpythonrestful 2022-06-04 19:06:58 779人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

一直在用node.js做后端,要逐步涉猎大数据范围,注定绕不过python,因此决定把一些成熟的东西用Python来重写,一是开拓思路、通过比较来深入学习python;二是有目标,有动力,希望能持之以恒的坚

一直在用node.js后端,要逐步涉猎大数据范围,注定绕不过python,因此决定把一些成熟的东西用Python来重写,一是开拓思路、通过比较来深入学习python;二是有目标,有动力,希望能持之以恒的坚持下去。

项目介绍

用python语言来写一个restful api service,数据库使用Mysql。因为只做后端微服务,并且ORM的实现方式,采用自动生成sql的方式来完成,因此选择了轻量级的flask作为WEB框架。如此选择,主要目的是针对中小规模的网络应用,能充分利用关系数据库的种种优势,来实现丰富的现代互联网应用。

REST的六个特性:

Client-Server:服务器端与客户端分离。 Stateless(无状态):每次客户端请求必需包含完整的信息,换句话说,每一次请求都是独立的。 Cacheable(可缓存):服务器端必需指定哪些请求是可以缓存的。 Layered System(分层结构):服务器端与客户端通讯必需标准化,服务器的变更并不会影响客户端。 Uniform Interface(统一接口):客户端与服务器端的通讯方法必需是统一的。 Code on demand(按需执行代码?):服务器端可以在上下文中执行代码或者脚本

restful api

restful api 的概念就不介绍了。这里说一下我们实现协议形式:


[GET]/rs/user/{id}/key1/value1/key2/value2/.../keyn/valuen     
[POST]/rs/user[/{id}]     
[PUT]/rs/user/{id}
[DELETE]/rs/user/{id}/key1/value1/key2/value2/.../keyn/valuen

说明:

rs为资源标识; 第二节,user,会被解析为数据库表名; 查询时,id为空或0时,id会被忽略,即为列表查询; 新建和修改,除接收form表单外,url中的id参数也会被合并到参数集合中; 删除同查询。

让flask支持正则表达式

flask默认路由不支持正则表达式,而我需要截取完整的URL自己来解析,经查询,按以下步骤很容易完成任务。

使用werkzeug库 :from werkzeug.routing import BaseConverter 定义转换器:

class RegexConverter(BaseConverter):

  def __init__(self, map, *args):
    self.map = map
    self.regex = args[0]
注册转换器 : app.url_map.converters['regex'] = RegexConverter 用正则来截取url : @app.route('/rs/<regex(".*"):query_url>', methods=['PUT', 'DELETE', 'POST', 'GET'])

几点疑问:

正则(.*)理论上应该是匹配任何除回车的所有字符,但不知道为什么,在这里不识别问号(?) 我用request.data来取表单数据,为何request.form取不到? '/rs/<regex("."):query_url>'后若加个反斜杠('/rs/<regex("."):query_url>/'),request.data就取不到数据,为什么?

解析json数据

解析JSON数据很容易,但我需要对客户端送上来的数据进行校验,下面是用异常处理又只解析一次的解决方案。


def check_json_format(raw_msg):
  try:
    js = json.loads(raw_msg, encoding='utf-8')
  except ValueError:
    return False, {}
  return True, js

URL解析

按既定协议解析URL,提取表名,为生成sql组合参数集合。


@app.route('/rs/<regex(".*"):query_url>', methods=['PUT', 'DELETE', 'POST', 'GET'])
def rs(query_url):
  (flag, params) = check_json_format(request.data)

  urls = query_url.split('/')
  url_len = len(urls)
  if url_len < 1 or url_len > 2 and url_len % 2 == 1:
    return "The params is wrong."

  ps = {}
  for i, al in enumerate(urls):
    if i == 0:
      table = al
    elif i == 1:
      idd = al
    elif i > 1 and i % 2 == 0:
      tmp = al
    else:
      ps[tmp] = al

  ps['table'] = table
  if url_len > 1:
    ps['id'] = idd
  if request.method == 'POST' or request.method == 'PUT':
    params = dict(params, **{'table': ps.get('table'), 'id': ps.get('id')})
  if request.method == 'GET' or request.method == 'DELETE':
    params = ps
  return jsonify(params)

完整代码


git clone https://GitHub.com/zhoutk/pyrest.git
cd rest
export FLASK_APP=index.py
flask run

小结

今天利用flask完成了web基础架构,能够正确解析URL,提取客户端提交的数据,按请求的不同方式来组合我们需要的数据。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: python Flask实现restful api service

本文链接: https://www.lsjlt.com/news/15812.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现Restful API
    Python实现Restful API 最近写了一个网络验证登录的爬虫,需要发布为Rest服务,然后发现Flask是一个很好的Web框架,使用Python语言实现。 1. 安装flask pip install flask 2....
    99+
    2023-01-31
    Python Restful API
  • Python+flask实现restful接口的示例详解
    目录>1.第一个实例:HelloWorld 2.Post 方法 3.Get 方法 4.通过变量设置动态url 1.第一个实例:HelloWorld 1.编写python代...
    99+
    2023-02-08
    Python flask实现restful接口 Python restful接口 Python flask restful接口
  • Python Flask RESTful怎么使用
    本篇内容介绍了“Python Flask RESTful怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、RES...
    99+
    2023-07-05
  • PHP RESTful API 设计与实现
    restful api是一种使用http协议的api设计样式,以资源概念和http方法操作数据。其设计指南包括明确的资源标识、统一接口、标准化响应、错误处理和版本控制。实施步骤包括安装p...
    99+
    2024-05-02
    php laravel
  • 如何在 Go 中实现 RESTful API?
    RESTful API 是一种常见的 Web 应用程序设计风格,它是一种轻量级的、可扩展的、基于 HTTP 协议的 API 设计方式。在本文中,我们将探讨如何使用 Go 语言来实现 RESTful API。 确定 API 路由 在 G...
    99+
    2023-07-23
    http api leetcode
  • RESTful API批量操作的实现
    要解决的问题 RESTful API对于批量操作存在一定的缺陷。例如资源的删除接口: DELETE /api/resourse/<id>/ 如果我们要删除100条数据怎么搞?难道要调用100次接口吗? 比较容易想到的是下面两...
    99+
    2023-01-31
    批量 操作 RESTful
  • SpringMVC Restful api接口实现的代码
    【前言】面向资源的 Restful 风格的 api 接口本着简洁,资源,便于扩展,便于理解等等各项优势,在如今的系统服务中越来越受欢迎。.net平台有WebAPi项目是专门用来实现Restful api的,其良好的系统封装,简洁优雅的代码实...
    99+
    2023-05-31
    springmvc restful api
  • Python进行Restful API开发实例详解
    目录1. Flask-RESTful2. fastapi + nacos服务注册2.1 post2.2 get请求接收list参数2.3 请求URL进行文件下载2.4 获取Reque...
    99+
    2024-04-02
  • PHP高级特性:RESTful API的实现技巧
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • 如何实现一个完整的Node.js RESTful API
    这篇文章给大家分享的是有关如何实现一个完整的Node.js RESTful API的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。环境搭建下载并安装Node.js https://...
    99+
    2024-04-02
  • SpringBoot中的Get与Post请求怎么利用Restful service实现
    SpringBoot中的Get与Post请求怎么利用Restful service实现?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. Get请求,url传参,返回jso...
    99+
    2023-05-31
    springboot restful service
  • Flask搭建api服务的实现步骤
    Flask是一个使用 Python 编写的轻量级 Web 应用框架,很适合个人开发,我们在此处做一个接口。 为方便调试,本文使用get接口方式。get接口十分简单,不需要上传任何数据...
    99+
    2024-04-02
  • Django开发RESTful API怎么实现增删改查
    小编给大家分享一下Django开发RESTful API怎么实现增删改查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!数据库中有user表如下:新建一个Djang...
    99+
    2023-06-15
  • 如何构建 Golang RESTful API,并实现 CRUD 操作?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • Python Django 与 RESTful API:构建现代化应用程序
    Django 的优点 模型-视图-模板 (MTV) 架构:Django 遵循 MTV 架构,将应用程序逻辑、数据模型和用户界面分离,简化了开发和维护。 内置 CRUD 操作:Django 提供了开箱即用的对创建、读取、更新和删除 (CR...
    99+
    2024-04-02
  • RESTful API设计原则与实现示例详解
    目录1. 什么是REST?2. RESTful API设计原则3. 实现RESTful API4. 总结1. 什么是REST? 在本文中,我们将详细讲解RESTful API的设计原...
    99+
    2023-05-16
    RESTful API设计原则 RESTful API
  • 如何使用 Golang 构建 RESTful API 并实现 CORS?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • Python Flask实现后台任务轻松构建高效API应用
    大家好,今天来学习用Flask API创建Python后台任务。 在Python中,有若干解决方案可以实现后台任务,比如Celery或Redis Queue,都是实现任务队列系统的好...
    99+
    2023-05-18
    Python Flask后台任务 Python Flask API创建后台任务
  • Python Flask API函数怎么使用
    这篇文章主要介绍“Python Flask API函数怎么使用”,在日常操作中,相信很多人在Python Flask API函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-07-05
  • Python+ Flask实现Mock Server详情
    目录一、Mock介绍1、什么是Mock2、Mock的三种典型应用场景3、Mock的作用4、Mock实现的3种方式二、环境搭建三、Mock的案例一、Mock介绍 1、什么是Mock 模...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作