Flask框架搭建REST-API服务
一、目的
为了能够将测试工具部署成RESTful-API服务,这样就能通过接口的方式提供统一测试工具服务,使用人员就不用构建application而产生的各种环境问题、使用问题。
适合人群:Python开发、Flask框架使用、REST风格web架构
二、介绍
Flask:Python web开发轻量框架,自由添加需要的扩展(Django于此相反)
Flask核心特性:
- 轻量级,提供插件接口
- 封装了request对象
- 拥有蓝图功能
- flash,在C端警告提示用户
- 模板支持宏
REST特点(约束[constraint]):
- 客户端-服务端 Client-Server CS
- 无状态 Stateless S
- 缓存 Cache $
- 统一接口 Uniform-interface U
- 系统分层 Layered L
- 按需代码 Code on Demand COD
REST核心概念:资源就是一切
REST架构API中使用的HTTP请求方法:
- GET 获取目标资源
- POST 创建新资源
- PUT 修改资源
- DELETE 删除资源
REST中资源的格式:json(首推)、xml
REST中版本管理方式:在URL加入版本号
三、REST-API of Flask
1,怎么将REST-API做成application的独立子集?
答:使用Flask的蓝图功能。
2,404和500状态码,是由FLask自己生成的,而且是返回HTML响应,如何让其返回json响应?
答:使用内容协商技术。(在错误处理程序中根据客户端请求的格式改写response.)
3,怎么认证用户,未经授权的用户,不能访问API?
答:因为REST是基于HTTP协议,所以发送密令最佳方式使用HTTP认证,用户密令包含在请求的Authorization首部中。FLask-HTTPAuth扩展,可以把协议的细节隐藏在修饰器中,因为认证只是在API蓝图中使用,所以初始化也在蓝图中。登录名和密码使用User模型中的方法验证。登录密令正确就返回True,失败就False,通过的认证的用户保存在FLask的全局对象g中,这样view函数就能访问。
4,API是需要认证才能访问,使用什么技术可以保护所有API?
答:使用Flask装饰器钩子before_request和FLask-HTTPAuth扩展的login_required装饰器,来对处理函数做修饰,这样API蓝图只用的所有API都会进行自动认证。在处理函数中“拒绝已通过认证但没有确认账户的有用户”
5,怎么对用户访问API限制时间,过期不能访问API?
答:itsdangerous库的TimedJSONWebSignatureSerializer生成token,token可以设置有效期
Flask框架搭建REST-API服务的更多相关文章
- 使用CodeIgniter框架搭建RESTful API服务
使用CodeIgniter框架搭建RESTful API服务 发表于 2014-07-12 | 分类于 翻译笔记 | 6条评论 在2011年8月的时候,我写了一篇博客<使用Cod ...
- 基于gin web框架搭建RESTful API服务
这篇主要学习go项目中的项目结构.项目规范等知识,ROM采用的database/sql的写法. 1.技术框架 利用的是ginweb框架,然后ROM层选用database/sql,安装mysql驱动.安 ...
- Go实战--通过gin-gonic框架搭建restful api服务(github.com/gin-gonic/gin)
生命不止,继续 go go go !!! 先插播一条广告,给你坚持学习golang的理由: <2017 软件开发薪酬调查:Go 和 Scala 是最赚钱的语言> 言归正传! 之前写过使用g ...
- 【PHP】基于ThinkPHP框架搭建OAuth2.0服务
[PHP]基于ThinkPHP框架搭建OAuth2.0服务 http://leyteris.iteye.com/blog/1483403
- 基于Flask框架搭建视频网站的学习日志(一)
------------恢复内容开始------------ 基于Flask框架搭建视频网站的学习日志(一)2020/02/01 一.Flask环境搭建 创建虚拟环境 初次搭建虚拟环境 搭建完虚拟环境 ...
- 基于Flask框架搭建视频网站的学习日志(二)
基于Flask框架搭建视频网站的学习日志(二)2020/02/02 一.初始化 所有的Flask程序都必须创建一个程序实例,程序实例是Flask类的对象 from flask import Flask ...
- 基于Flask框架搭建视频网站的学习日志(三)之原始web表单
基于Flask框架搭建视频网站的学习日志(三)1.原始Web 表单 本节主要用于体验一下前端后端直接数据的交互,样例不是太完善,下一节会加入Flash处理,稍微完善一下页面 (备注:建议先阅读廖雪峰老 ...
- .Net Core3.0 WebApi 项目框架搭建 二:API 文档神器 Swagger
.Net Core3.0 WebApi 项目框架搭建:目录 为什么使用Swagger 随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染.后端分离的形态,而且前端技术和后端技 ...
- Flask框架搭建一个日程表
目录 前言 项目介绍 技术栈 Flask Web开发流程 一.搭建环境 1.1: 创建虚拟环境 1.2: 安装依赖包 1.3: 创建依赖包列表文件 1.4: 测试hello word 二.应用程序开发 ...
随机推荐
- python-正则表达式练习
1.匹配普通URL ^(http://)([a-z]+)\.([a-z]+)\.(com|cn|net|edu)(/(\w)+)+(.+) 2.匹配type返回的字符串中的类型 import re r ...
- js使用面向对象编写下拉菜单
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- Kafka对Java程序员有多重要?连阿里都再用它处理亿万级数据统计
一.了解淘宝Kafka架构 在ActiveMQ.RabbitMQ.RocketMQ.Kafka消息中间件之间,我们为什么要选择Kafka?下面详细介绍一下,2012年9月份我在支付宝做余额宝研发,20 ...
- 基于ipv6的数据抓包
一.实验拓扑 二.配置过程 以r1为例 R1: R1(config)#int f0/0 R1(config-if)#ipv6 enable R1(config-if)#ipv6 address 200 ...
- Hive篇--相关概念和使用二
一.基本概念 Hive分桶: 1.概念 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储.对于hive中每一个表.分区都可以进一步进行分桶.(可以对列,也可以对表进行分桶)由列的哈希值除以桶 ...
- Python内置函数(26)——globals
英文文档: globals() Return a dictionary representing the current global symbol table. This is always the ...
- java多线程(8)---阻塞队列
阻塞队列 再写阻塞列队之前,我写了一篇有关queue集合相关博客,也主要是为这篇做铺垫的. 网址:[java提高]---queue集合 在这篇博客中我们接触的队列都是非阻塞队列,比如Priority ...
- 『追捕盗贼 Tarjan算法』
追捕盗贼(COCI2007) Description 为了帮助警察抓住在逃的罪犯,你发明了一个新的计算机系统.警察控制的区域有N个城市,城市之间有E条双向边连接,城市编号为1到N. 警察经常想在罪犯从 ...
- Python爬虫入门教程 26-100 知乎文章图片爬取器之二
1. 知乎文章图片爬取器之二博客背景 昨天写了知乎文章图片爬取器的一部分代码,针对知乎问题的答案json进行了数据抓取,博客中出现了部分写死的内容,今天把那部分信息调整完毕,并且将图片下载完善到代码中 ...
- Ubuntu安装谷歌浏览器
首选方法: sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/ wg ...