59 lines
No EOL
1.8 KiB
Markdown
59 lines
No EOL
1.8 KiB
Markdown
```
|
||
## 第一个参数是访问方式,get/put/delete/post等,第二个参数是文件或者uri字符串,如/item/es/_search
|
||
## 文件中,第一行为uri字符串
|
||
## 其他行合并组成一个访问的data数据
|
||
## 测试失败,不识别query,暂时未找到解决方法
|
||
|
||
|
||
#!/usr/bin/env python
|
||
#_*_Coding:UTF-8_*_
|
||
|
||
import requests
|
||
import sys
|
||
import json
|
||
import os
|
||
|
||
class Esdata(object):
|
||
def __init__(self, refers, header):
|
||
self.refers = refers
|
||
self.header = header
|
||
|
||
## 通过脚本参数传入,决定调用的函数
|
||
def operator(self, func):
|
||
return getattr(requests, func)
|
||
|
||
## 得到response
|
||
def getdata(self, func, uri, data):
|
||
url = self.refers + uri
|
||
if self.operator(func) in ["put", "post"]:
|
||
response = self.operator(func)(url, data=data, headers=header)
|
||
else:
|
||
response = self.operator(func)(url, params=data, headers=header)
|
||
return response
|
||
|
||
if __name__ == '__main__':
|
||
refers = 'http://127.0.0.1:9200'
|
||
header = {"content-Type": "application/json"}
|
||
# 传递参数,get/put/post/delete等
|
||
methods = sys.argv[1]
|
||
d = sys.argv[2]
|
||
# 判断第二个参数是否文件
|
||
if d and os.path.isfile(d):
|
||
with open(d, 'rb') as f:
|
||
# readline函数,一次读取一行,这是第一行uri
|
||
uri = f.readline()
|
||
data = ''
|
||
# 其他行组成data,用于传入访问链接
|
||
for line in f.readlins()[0:]:
|
||
data = data + line.strip()
|
||
else:
|
||
uri = d
|
||
data = None
|
||
|
||
# 读出的data中,会把双引号转换成单引号,但转换成json格式就会异常,需要替换一下
|
||
data = data.replace("\'","\"")
|
||
|
||
es = Esdata(refers, header)
|
||
res = es.getdata(methods, uri, json.loads(data))
|
||
print(json.dumps(res.text, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False))
|
||
``` |