国庆假第四天,1API代码;2一些概念代码等

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国庆假第四天,1API代码;2一些概念代码等相关的知识,希望对你有一定的参考价值。

1.1 Client端

#!/usr/bin/env python  
# _*_ coding:utf-8 _*_

# @Time    : 2017/10/02 
# @File    : auto_client/src/apiauthtest.py

import hashlib,time,requests
def md5(arg):
hs = hashlib.md5()
hs.update(arg.encode(‘utf-8‘))
return hs.hexdigest()

key =‘sfAhs454if34q595331DG4323shfiuerq112u‘ # 可以写在配置文件中
ctime = str(time.time())
final_key = ‘%s|%s‘%(key,ctime)
md5_str = md5(final_key)
print(md5_str)
auth_header_val = ‘%s|%s‘%(md5_str,ctime)
print(auth_header_val)

response = requests.get(‘http://127.0.0.1:8177/api/api_auth‘,
headers={‘api-auth‘:auth_header_val})
# 一定要注意在hearders中的键key,
# 单词键连接不能写_,如‘api_auth‘,
# 需写作‘api-auth‘,这时服务端要读取时写作,request.META.get(‘HTTP_API_AUTH’0
print(response.text)

1.2 Server端
#!/usr/bin/env python  
# _*_ coding:utf-8 _*_

# @Time    : 2017/10/2
# @File    : auto_server/api/plugins/apiauth.py

import time,hashlib
from django.shortcuts import HttpResponse
from django.conf import settings

key = settings.API_AUTH_KEY
visited_key_dict = []
# 这个应当写入数据库

def md5(arg):
hs = hashlib.md5()
hs.update(arg.encode(‘utf-8‘))
return hs.hexdigest()

def api_auth(func):
def innner(request,*args,**kwargs):
server_float_time = time.time()
auth_hearder_val = request.META.get(‘HTTP_API_AUTH‘)
# 取到加密文字和加密时间
client_md5_str,client_ctime = auth_hearder_val.split(‘|‘)
server_md5_str = md5(‘%s|%s‘%(key,client_ctime))
print()
client_float_ctime = float(client_ctime)

if client_float_ctime +20 < server_float_time:
# 验证加密码有效时长为20秒
return HttpResponse(‘验证加密码超过时限了‘)

if client_md5_str != server_md5_str:
return HttpResponse(‘加密验证码错误‘)

if client_md5_str in visited_key_dict:
return HttpResponse(‘验证码已经被使用了‘)

visited_key_dict.append(client_md5_str)
return func(request,*args,**kwargs)

return innner

2.1 一些概念及代码
Python中最基本的数据结构是序列。Python内建的序列,列表、元祖、字符串。字典的数据类型为映射(Python中唯一的内建映射的数据类型)。序列和映射是两类主要的容器。Python没有独立的堆(数据结构)类型。只有一个包含一些堆操作函数的模块(heapq)。
技术分享
环境变量不是Python解释器一部分,它属于操作系统。
若没有设定__all__,import*语句默认导入模块中所有不以下划线开头的全局名称。

    map()函数和lambda(省去一些不必要的for循环代码,以下都可以用列表推导式……)

技术分享    技术分享






























































































以上是关于国庆假第四天,1API代码;2一些概念代码等的主要内容,如果未能解决你的问题,请参考以下文章

国庆假第三天,1测试自己写的服务器资产管理server端和client端程序;2复习生成器等知识

国庆七天乐——第四天

国庆第四天作业完成程度

国庆佳节第四天,谈谈我月收入增加 4K 的故事

学习工作记录三

Java学习第二十四天