У меня есть RESTful API, который выполняет вызов GET, как это,
private static String URL_VALUE = "http://completion.amazon.com/search/complete?search-alias=aps&client=amazon-search-ui&mkt=1&q=";
@GetMapping("/estimate")
public ResponseEntity<Search> search(@RequestParam("keyword") String keyword) {
keyword = keyword.replace(' ', '+');
String s = null;
try {
s = getJsonData(URL_VALUE + keyword);
} catch (Exception e) {
e.printStackTrace();
}
if (!isValidJSON(s)) {
return ResponseEntity.of(Optional.empty());
}
String[] values = processJsonData(s);
int score = getKeywordScore(values, keyword);
Search search = new Search();
search.setKeyword(keyword);
search.setScore(score);
return ResponseEntity.of(Optional.ofNullable(search));
}
На самом деле getJsonData
делает еще один GET
запрос к API Amazon,
public static String getJsonData(String urlToRead) throws Exception {
StringBuilder builder = new StringBuilder();
System.out.println(urlToRead);
URL url = new URL(urlToRead);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
builder.append(line);
}
reader.close();
return builder.toString();
}
Должен ли я осознавать что-либо в сценарии или есть лучший способ выполнить задачу?Я делаю запрос, используя cURL
к моему API,
$ curl -X GET http://localhost:8080/estimate?keyword=iphone+charger | jq
Спасибо.