python 学习笔记(十四)有依赖关系的接口开发
接口开发中存在很多有依赖关系的接口,例如:BBS中发帖的时候就需要进行校验用户是否登录,那么此时发帖的接口就与用户登录接口有依赖关系。在发帖时就需要先获取用户的session,与当前登录用户进行校验对比。校验成功才能进行发帖操作。那么下面我们就来开发一个这样的接口吧。。。
首先我们需要开发一个登录接口
@server.route('/login',methods=['get'])
def login():
username = flask.request.values.get('username')
pwd = flask.request.values.get('passwd')
if username == 'summer' and pwd =='':
session_key = 'session:%s'%username
session_id = tools.my_md5(username+time.strftime('%H%m%d%H%M%S'))
tools.op_myredis(session_key,session_id,)
res = {'session_id': session_id, 'error_code': , '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(session_key, session_id, ) # 最后的数字是cookie的失效时间。
return res
然后运行该文件,我们在浏览器中输入http://127.0.0.1:8000/login?username=summer&passwd=123456,即可获取到接口返回接口,并且可以在浏览器中查看到cookie的值

接下来我们需要开发一个发帖的接口,如果从浏览器获取到的cookie与数据库中获取到的session一致,那么就允许发表文章
@server.route('/posts',methods=['post'])
def posts():
cookies = flask.request.cookies #获取所有的cokies,字典形式存储在cookies中
username=''
cook = '' #定义这两个变量是为了,在没有传cookie的时候用的。
for key,value in cookies.items():
if key.startswith('session:summer'): #判断cookie以session:summer开头的话,取到它
username = key
cook = value #调用接口的时候用户传过的cookie,从cookies里面取过来的
redis_session = tools.op_myredis(username) #从redis里面获取到的的session
if redis_session==cook: #判断传过来的cookie和redis里面的session一样
title=flask.request.values.get('title')#获取文章标题
content = flask.request.values.get('content')#获取文章内容
article_key = 'article:%s'%title#把文章写入redis
tools.op_myredis(article_key,content)
res = {'msg':'文章发表成功!','code':}
else:
res = {'msg':'用户未登录!','code':}
return json.dumps(res,ensure_ascii=False)
登录之后在postman里验证接口,即可成功!

python 学习笔记(十四)有依赖关系的接口开发的更多相关文章
- python 学习笔记十四 jQuery案例详解(进阶篇)
1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- python学习笔记(十 四)、web.py
使用web.py 通过python进行网页的编写,下面我们来简单了解一哈web.py 的使用 1 url处理 使用特定的url结构来解析我们发送的请求.如下面所示: urls = ( '/login' ...
- python学习笔记十四:wxPython Demo
一.简介 wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的.功能键全的GUI用户界面. wxPython是作为优秀的跨平台GUI库wxWidgets ...
- python学习笔记(十四): unittest
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestC ...
- python学习笔记(十四)python实现发邮件
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart u ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- Python学习笔记(四)
Python学习笔记(四) 作业讲解 编码和解码 1. 作业讲解 重复代码瘦身 # 定义地图 nav = {'省略'} # 现在所处的层 current_layer = nav # 记录你去过的地方 ...
- Python学习笔记(四)函数式编程
高阶函数(Higher-order function) Input: 1 abs Output: 1 <function abs> Input: 1 abs(-10) Output: 1 ...
- Python学习笔记(十二)—Python3中pip包管理工具的安装【转】
本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...
随机推荐
- KMP + 求最小循环节 --- HUST 1010 - The Minimum Length
The Minimum Length Problem's Link: http://acm.hust.edu.cn/problem/show/1010 Mean: 给你一个字符串,求这个字符串的最小循 ...
- 精心收集的Hadoop学习资料(持续更新)
转自:http://blog.csdn.net/wypblog/article/details/17528851 最近发现自己收集到的Hadoop学习资料有很多本,想想放在那里也浪费,所以觉得贴出来给 ...
- 一个try可以跟进多个catch语句,用于处理不同情况,当一个try只能匹配一个catch
一个try可以跟进多个catch语句,用于处理不同情况.当一个try只能匹配一个catch. 我们可以写多个catch语句,但是不能将父类型的exception的位置写在子类型的excepiton之前 ...
- 【BZOJ】1042: [HAOI2008]硬币购物(dp+容斥原理)
http://www.lydsy.com/JudgeOnline/problem.php?id=1042 一开始写了个O(nv)的背包,果断tle... 看了题解,,好神..用了组合数学中的多重集合方 ...
- 小结:A* & IDA* & 迭代深搜
概要: 在dfs中,如果答案的深度很小但是却很宽,而且bfs还不一定好做的情况下,我们就综合bfs的优点,结合dfs的思想,进行有限制的dfs.在这里A*.IDA*和迭代深搜都是对dfs的优化,因此放 ...
- datatable详解(angular-datatable)+后台分页(springmvc)
datable常规配置,百度一大堆 function prepareDatatable(selector, options) { var defaultOptions = { autoWidth: t ...
- Python爬虫(七)
源码: import requests import re from my_mysql import MysqlConnect # 获取详情页链接和电影名称 def get_urls(page): u ...
- jQuery------$.each()遍历类方法
方法一:(推荐) //遍历city类<div name = 'city' class = 'city'></div> var ck = $(".city") ...
- ios开发之 -- 强制横屏
在写项目的时候,会遇到很多稀奇古怪的需求,我就碰到一个写一个网站,需要强制横屏,然后不需要上架,网上看了很多大神的需求,基本都能实现,但是不太好用, 自己参考搞了一个,代码如下: AppDelegat ...
- Linux命令之乐--find
find是命令行工具箱中最棒的命令之一. 列出当前目录及其子目录中的文件和文件夹. [root@LAMP WebRoot]# find . -print../index.jsp./upload.jsp ...