Извлечение параметров запроса GET из Java в API-интерфейс REST Python Hug - PullRequest
0 голосов
/ 28 августа 2018

Я создал Rest API, используя Python Hug, который принимает список в качестве параметра.

Код 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. Когда вызывается API-интерфейс REST Python, и я печатаю длину списка на стороне python, длина элементов списка не совпадает, она составляет где-то около 500. Это связано с отправкой параметра в виде строки запроса в GET-запросе или существует проблема преобразования между Java arrayList и Python List?

System.out.println (textArr.size ()); # дает 17 (код Java)

print (len (textList)) # дает 543 (код Python)

1 Ответ

0 голосов
/ 28 августа 2018

проблема была решена путем использования API в качестве метода POST, передачи значения из Java в качестве тела запроса и извлечения входных данных в качестве тела на стороне Python.

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