一、接口需求

1、登录接口

  (1)登录成功后将session信息存入redis数据库并设置失效时间为600秒

  (2)构造返回结果的对象flask.make_response()

  (3)产生cookie,失效时间同样设定为600秒

2、发帖接口

  (1)根据登录接口成功写入的cookie来判断用户是否登录

  (2)判断用户传过来的session和redis数据库中存入的session是否一致

  (3)如果一致的话则进行发帖操作

二、代码实现

 import flask,time,json
from lib.tools import my_md5,op_redis
server = flask.Flask(__name__) @server.route('/login')
def login():
username = flask.request.values.get('username')
pwd = flask.request.values.get('pwd')
if username == 'luolei' and pwd == '':
session_id = my_md5(username+time.strftime('%Y%m%d%H%M%S'))
key = 'session:%s'%username
op_redis(key,session_id,600)
res = {'sessionid':session_id,'error_code':0,'msg':'登录成功',
'login_time':time.strftime('%Y%m%d%H%M%S')}#给用户返回的信息
json_res = json.dumps(res,ensure_ascii=False)#返回结果转成json
res = flask.make_response(json_res)#构造返回结果的对象
res.set_cookie(key,session_id,600)#600是cookie的失效时间
return res # 有依赖关系的接口
# 根据上面登录成功写入的cookie来判断用户是否登录,然后进行发帖操作
@server.route('/posts')
def posts():
username = ''
session = '' # 定义这两个变量是为了在没有传cookie的时候用的
cookies = flask.request.cookies # 获取所有的cookie
for key,value in cookies.items():
if key.startswith('session:'): # 判断cookie是否以session开头
username = key
session = value # 调用接口的时候用户传过来的session,从cookie中获取到的
redis_session = op_redis(username) # 从redis中获取到的cookie
if redis_session == session: # 判断用户传过来的session和redis里面的session是否一样
title = flask.request.values.get('title')
content = flask.request.values.get('content')
article_key = 'article_key:%s'%title
op_redis(article_key,content) # 把文章写入redis
res = {'msg':'文章发表成功','code':0000}
else:
res = {'msg':'用户未登录','code':2001}
return json.dumps(res,ensure_ascii=False)

 三、项目添加环境变量

 import sys,os
os.path.abspath(__file__) # 获取到当前文件的绝对路径
os.path.dirname(__file__) # 获取父目录,获取它的上一级目录
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 获取到当前程序的主目录
sys.path.insert(0,BASE_PATH) # 将程序主目录加入python环境变量

Python学习之==>有依赖关系的接口开发的更多相关文章

  1. python 学习笔记(十四)有依赖关系的接口开发

    接口开发中存在很多有依赖关系的接口,例如:BBS中发帖的时候就需要进行校验用户是否登录,那么此时发帖的接口就与用户登录接口有依赖关系.在发帖时就需要先获取用户的session,与当前登录用户进行校验对 ...

  2. Spring框架学习之高级依赖关系配置(一)

    上篇文章我们对Spring做了初步的学习,了解了基本的依赖注入思想.学会简单的配置bean.能够使用Spring容器管理我们的bean实例等.但这还只是相对较浅显的内容,本篇将介绍bean的相关更高级 ...

  3. Python基础-修改excel、redis、接口开发、组织代码

    pymysql模块补充内容 1. 游标.description():显示表的字段属性 (什么是游标:游标用于交互式应用,就好比word里的光标一样,要修改某个地方,要先把光标移动到这里) 用好这个方法 ...

  4. Spring框架学习之高级依赖关系配置(二)

    紧接着上篇内容,本篇文章将主要介绍XML Schema的简化配置和使用SpEL表达式语言来优化我们的配置文件. 一.基于XML Schema的简化配置方式 从Spring2.0以来,Spring支持使 ...

  5. 【Python】djangorestframework 基于django框架的接口开发

    官网:http://www.django-rest-framework.org/#installation 下载:https://pypi.python.org/pypi/djangorestfram ...

  6. 微软企业库5.0 学习之路——扩展学习篇、库中的依赖关系注入(重构 Microsoft Enterprise Library)[转]

    这篇文章是我在patterns & practices看到的一篇有关EntLib5.0的文章,主要介绍了EntLib5.0的这次的架构变化由来,觉得很不错,大家可以看一下! 在过去几年中,依赖 ...

  7. 类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)

    类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图. ...

  8. Postman 使用技巧之多环境测试及接口依赖关系处理

    一.前言 在日常开发中,除了正常的单元测试,某些情况我们还需要测试 HTTP 接口,团队中目前使用的是「 Postman 」这款 API调试 . HTTP 请求工具.通常我们将经常要测试的接口按照项目 ...

  9. python学习 day017打卡 类与类之间的关系

    本节主要的内容: 1.依赖关系 2.关联关系,组合关系,聚合关系 3.继承关系,self到底是什么? 4.类中的特殊成员 一.类与类之间的依赖关系 在面向对象的世界中,类与类中存在以下关系: 1.依赖 ...

随机推荐

  1. [PyQt5]动态显示matplotlib作图(一)

    完整实例 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QVBoxLayout, QSizePoli ...

  2. Laravel-admin 加载视图后,blade 模板 JS 失效

    laravel-admin js无法解析 解决 在不需要使用 pjax 的地方使用 Admin::disablePjax();

  3. laravel的model

    1.创建模型 $ php artisan make:model Models/Issue   2.模型的白名单机制,用于赋值 class Issue extends Model { //指定表名 pr ...

  4. ifconfig命令返回找不到“-bash: ifconfig: command not found”

    “-bash: ifconfig: command not found“因为系统没有安装net-tools yum -y install net-tools

  5. Kubernetes集群详细介绍及部署

    kubernetes的介绍: kubernetes是谷歌在2014年6月的一个开源集群项目,使用go语言开发,因为除了ks后只有8个字母又被称为k8s. k8s的主要作用: 自动化部署 扩展容器的管理 ...

  6. TJOI2017DNA

    P3763 [TJOI2017]DNA 字符串匹配,字符集大小为\(4\),认为相差不超过\(3\)即合法. 对每一种字符分开考虑不同产生的贡献. 对于串\(S\),如果当前位置相同则\(S_i=1\ ...

  7. 用jquery控制表单提交

    可以监听表单submit提交事件给form一个id 吧button的type为submit $(form的id).submit(function(){ if(window.confirm('你确定要取 ...

  8. 第六篇:Scrapy框架

    爬虫框架之Scrapy 一.介绍 二.安装 三.命令行工具 四.项目结构以及爬虫应用简介 五.Spiders 六.Selectors 七.Items 八.Item Pipelin 九. Dowload ...

  9. java数据结构5--集合Map

    Map Map与Collection在集合框架中属并列存在 Map存储的是键值对<K,V> Map存储元素使用put方法,Collection使用add方法 Map集合没有直接取出元素的方 ...

  10. HDU-2732-leapin'Lizards(最大流, 拆点)

    链接: https://vjudge.net/problem/HDU-2732 题意: Your platoon of wandering lizards has entered a strange ...