Создайте изменяемый запрос внутри другого такого же запроса - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть 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

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...