saltstack的rest接口salt-api开发—基于flask-restful

简介:

之前官方给的salt-api在前期用着也还不错,后来发现貌似不支持timeout选项(也许我太弱,也没研究过它cherrypy的框架),搞来搞去实在没办法就拿着flask重新封装了一层webapi。


刚学的flask,写的不好勿喷(完全是为了公司需求啊!!)


代码都放在github上了,基本功能OK,只去掉了根据公司需求自定义的一些功能类。

地址:https://github.com/lustlost/saltstack-api-Flask


简单的搞了一个token验证,通过rest传过去的。这里就讲下具体的认证方式:


首先双方协商一个key,加上当先时间,到小时为止,然后hash出一个值作为最终的token,所以这个token是每小时都会变化的,双方协商好key就会自动生成。也可以精确到每十分之或者每分钟,具体看不同需求了。


1
2
3
4
5
6
7
8
9
10
11
12
class  Token():
     def  __init__( self ):
         self .now_time  =  time.strftime( '%Y-%m-%d-%H' ,time.localtime(time.time()))
     def  getToken( self ,key):
         md5  =  hashlib.md5()
         md5.update( self .now_time + key)
         return  md5.hexdigest()
     def  authToken( self ,one_token,two_token):
         if  one_token  = =  two_token:
             return  True
         else :
             return  False



这是一个请求的demo,自己修改para_dict里的value就行了,可以根据需求在para_dict中可以加上timeout的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import  commands,urllib
import  time,sys
import  hashlib
now_time  =  time.strftime( '%Y-%m-%d-%H' ,time.localtime(time.time()))
key  =  'haha'
md5  =  hashlib.md5()
md5.update(now_time + key)
token  =  md5.hexdigest()
"""
para_dict={
     "tgt":"200-119-0.jh.qszg.uuzu.idc",
     "server_config":"true",
     "token":token
}
"""
para_dict = {
     "tgt" : "200-119-0.jh.qszg.uuzu.idc" ,
     "fun" : "cmd.run" ,
     "args" : "uptime" ,
     "expr_form" : "list" ,
     "token" :token
}
api_url  =  "http://10.0.5.201:5000/api"
                                                                                                                                                                       
post_para  =  urllib.urlencode(para_dict)
api_info = urllib.urlopen(api_url,post_para).read()
print  "Now Token : %s"  %  token
print  api_info


最后通过uwsgi和nginx整合,提供一下uwsgi.xml

1
2
3
4
5
6
7
8
9
< uwsgi >
      < pythonpath >/root/test</ pythonpath >
      < module >api</ module >
      < callable >app</ callable >
      < socket >/tmp/uwsgi.sock</ socket >
      < master />
      < processes >4</ processes >
      < memory-report />
</ uwsgi >


看下效果:

wKiom1MUVjTwgKm-AACBybSdDKE584.jpg



本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/1366981,如需转载请自行联系原作者

相关文章
|
10月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
11月前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。
|
11月前
|
人工智能 自然语言处理 机器人
使用 API 编程开发扣子应用
扣子(Coze)应用支持通过 API 编程,将 AI 聊天、内容生成、工作流自动化等功能集成至自有系统。主要 API 包括 Bot API(用于消息交互与会话管理)及插件与知识库 API(扩展功能与数据管理)。开发流程包括创建应用、获取密钥、调用 API 并处理响应,支持 Python 等语言。建议加强错误处理、密钥安全与会话管理,提升集成灵活性与应用扩展性。
3284 0
|
10月前
|
API 开发者 数据采集
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
2025反向海淘新机遇:依托代购系统,聚焦小众垂直品类,结合Pandabay数据选品,降本增效。系统实现智能翻译、支付风控、物流优化,助力中式养生茶等品类利润翻倍,新手也能快速入局全球市场。
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
|
11月前
|
数据采集 缓存 API
小红书笔记详情 API 实战指南:从开发对接、场景落地到收益挖掘(附避坑技巧)
本文详解小红书笔记详情API的开发对接、实战场景与收益模式,涵盖注册避坑、签名生成、数据解析全流程,并分享品牌营销、内容创作、SAAS工具等落地应用,助力开发者高效掘金“种草经济”。
小红书笔记详情 API 实战指南:从开发对接、场景落地到收益挖掘(附避坑技巧)
|
10月前
|
存储 缓存 算法
淘宝买家秀 API 深度开发:多模态内容解析与合规推荐技术拆解
本文详解淘宝买家秀接口(taobao.reviews.get)的合规调用、数据标准化与智能推荐全链路方案。涵盖权限申请、多模态数据清洗、情感分析、混合推荐模型及缓存优化,助力开发者提升审核效率60%、商品转化率增长28%,实现UGC数据高效变现。
|
10月前
|
存储 缓存 算法
亚马逊 SP-API 深度开发:关键字搜索接口的购物意图挖掘与合规竞品分析
本文深度解析亚马逊SP-API关键字搜索接口的合规调用与商业应用,涵盖意图识别、竞品分析、性能优化全链路。通过COSMO算法解析用户购物意图,结合合规技术方案提升关键词转化率,助力卖家实现数据驱动决策,安全高效优化运营。
|
12月前
|
测试技术 API 开发工具
API文档该怎么写,开发效率能翻几倍?
API文档是提升开发效率与协作的关键因素,本文探讨了API文档的核心要素、常见类型及编写规范,并介绍了如何借助现代化工具如Apifox实现高效管理与维护,助力团队打造高质量的API文档体系。
|
12月前
|
算法 前端开发 API
京东比价项目开发实录:京东API接口(2025)
本文分享了作者在电商开发中对接京东商品详情API的实战经验,涵盖了申请权限、签名算法、限流控制、数据解析等常见问题,并提供了亲测有效的Python代码示例,帮助开发者避坑。
|
12月前
|
人工智能 API 定位技术
MCP 开发实战:手把手教你封装高德地图与 arXiv API
本教程为 MCP(Model Context Protocol)开发实战第二阶段,带你从零封装第三方 API 为 AI 模型可用工具。通过高德地图地理编码与 arXiv 论文检索两个实例,涵盖项目搭建、工具声明、资源定义、错误处理等核心内容,助你快速上手 MCP 开发并集成至 Claude 使用。

推荐镜像

更多