zoukankan      html  css  js  c++  java
  • 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 =='123456':
            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,600)
            res = {'session_id': 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(session_key, session_id, 3600)  # 最后的数字是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':0}
        else:
            res = {'msg':'用户未登录!','code':2009}
        return json.dumps(res,ensure_ascii=False)

    登录之后在postman里验证接口,即可成功!

  • 相关阅读:
    将所有程序设置XML集中到一个单独XML配置文件的方法:使用appSettings元素的configSource元素
    MVC中JQuery文件引入的路径问题,@Url.Content函数
    EF的表连接方法Include()
    在使用EFCodeFirst中出现类型“System.Data.Objects.ObjectContext”在未被引用的程序集中定义的解决方案
    总结下遇到的C#新语法
    MVC3下的layout页面
    C#委托初探
    WebBrowser Control
    Python之面向对象二
    Python之面向对象一
  • 原文地址:https://www.cnblogs.com/mululu/p/9041899.html
Copyright © 2011-2022 走看看