从Java获取GET请求参数到Python Hug REST API

时间:2018-08-28 08:09:44

标签: java python rest api hug

我已经使用Python Hug创建了一个Rest API,该API接受列表作为参数。

Python REST API代码

import hug
@hug.get('/myFunc/')
def myFunc(textList)
   print(len(textList))
   print(type(textList))

Java代码

List<String> textArr = new ArrayList<String>(); 
File htmlsFolder =  new File(#html Folder Path);
try {
File[] files = htmlsFolder.listFiles();
for (File file : files) {    
html = new String(Files.readAllBytes(Paths.get(file.getPath())));
Document doc = Jsoup.parse(html); 
textArr.add(doc.body().text().replaceAll("[\\n\\t\\r\\s+]", " ")); 
}  
System.out.println(textArr.size());
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders(); 
HttpEntity<String> entity = new HttpEntity<String>(null, headers);
ResponseEntity<String> response = restTemplate.exchange("http://apiurl/myFunc?textList="+textArr.toString(), HttpMethod.GET, entity, String.class);

Java代码从文件夹路径读取/解析html文件,并将内容存储在arrayList中。如果有17个html文件,则arrayList的大小为17。当调用Python REST API时,我在python端打印列表的长度,列表项的长度不相同,大约为500。这是由于在GET请求中将参数作为查询字符串发送,还是Java arrayList和Python List之间存在转换问题?

System.out.println(textArr.size()); #gives 17(Java代码)

print(len(textList))#gives 543(Python代码)

1 个答案:

答案 0 :(得分:0)

此问题已解决,方法是将api设为POST方法,将Java的值作为请求主体传递,并在Python端将输入作为主体获取。

import hug
@hug.post('/myFunc/')
def myFunc(body)
   textList = body['textList']