一、接口需求

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. Binary Numbers AND Sum CodeForces - 1066E (前缀和)

    You are given two huge binary integer numbers aa and bb of lengths nn and mmrespectively. You will r ...

  2. [NoSql注入] MongoDB学习

    0x00 安装 下载:http://dl.mongodb.org/dl/win32/x86_64 安装:http://www.runoob.com/mongodb/mongodb-window-ins ...

  3. Codeforces 980 并查集/模拟贪心最小字典序 找规律/数去除完全平方因子 逆思维倍增预处理祖先标记点

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...

  4. Qt常见错误

    fatal error: QApplication: No such file or directory 在.pro文件中 添加 QT += widgets fatal error: QTcpSock ...

  5. Python之网路编程之线程介绍

    一.什么是线程 线程:顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才 ...

  6. 34.ITerm配置使用——2019年12月24日

    2019年12月23日15:17:36 ITerm使用教程 1.快键键配置 设置方法 设置方法如下: (1)选择 Preference 进入偏好设置: (2)选择 Profiles > Keys ...

  7. python实例31[生成随即的密码]

    代码: import random import string import time # strong.high = 3  #random for the whole passwd #storng. ...

  8. default关键字

    default关键字在JDK8中有两个用处. 1.在switch语句的时候使用default int gender = 3; String genderString; switch (gender) ...

  9. 工作流学习之入门demo

    /** * Copyright (C), 2015-2018, XXX有限公司 * FileName: DemoMain * Author: happy * Date: 2018/6/23 16:33 ...

  10. 8.0.17 MySQL Community Server 二进制手工安装

    8.0.17 MySQL Community Server 二进制手工安装 环境简介 操作系统:Centos 6.10 64位目前版本:8.0.17 MySQL Community Server 二进 ...