簡體   English   中英

我怎樣才能從一個 REST API 中得到具體的數據?

[英]How can I get specific data from a REST API in?

因此,我正在嘗試使用 java 代碼從 rest api 訪問數據,而我在使用 java 從 api 獲取數據方面不是很有經驗。我在另一個問題上找到了下面的代碼。 此代碼能夠 output 來自鏈接的所有數據,但我對如何從鏈接獲取特定值感到有點困惑。 下面代碼中的鏈接顯示了蘋果的營養信息,我正在尋找的是能夠 output 特定值,例如 fdcId 或描述。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
    public static void main(String[] args) {
        try {

            URL url = new URL("https://api.nal.usda.gov/fdc/v1/food/1750339?api_key=DEMO_KEY");//your url i.e fetch data from .
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");
            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP Error code : "
                        + conn.getResponseCode());
            }
            InputStreamReader in = new InputStreamReader(conn.getInputStream());
            BufferedReader br = new BufferedReader(in);
            String output;
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }
            conn.disconnect();

        } catch (Exception e) {
            System.out.println("Exception in NetClientGet:- " + e);
        }
    }
}

我並沒有真正嘗試過代碼。 我試着在網上尋找這個問題的答案,但沒有找到太多

您需要查看如何在 Java 中解析 Json。這樣您就可以從該 Json 文件中獲取所需的任何數據。 類似問題的一些解釋在這里。

通常是 Spring 或用於此目的的其他框架。 在您的示例中,您可以像這樣保存 JSON 對字符串的響應:

String reponse = "";
String line;
while ((line = br.readLine()) != null) {
    reponse += line;
}

而不是解析這個 JSON,fe 使用 Jackson ObjectMapper 將它轉換成你的 dto。
這里有一個例子: https://www.baeldung.com/jackson-object-mapper-tutorial

你的問題應該分為兩部分:

  1. 如何從 API 讀取信息
  2. 如何解析它。

您已經完成的第一部分。 但是到目前為止,您可以用更少的代碼來完成。 可以使用3d方HTTP客戶端。 最受歡迎的是Apache Http具有良好教程的客戶端 - Apache HttpClient 教程OK Http具有良好教程的客戶端 - OkHttp指南 但是,我編寫了自己的 Http 客戶端,該客戶端並不廣為人知,但使用起來非常簡單。

第二部分是如何解析 Json。為此,您還可以使用 3d 方 Json 解析器。 最受歡迎的是Json JacksonGson (Google 的)。 同樣,我還在 Json-Jackson 上編寫了自己的瘦包裝器,它允許您非常簡單地解析 Json。 這是使用我自己的實用程序的代碼示例:

HttpClient httpClient = new HttpClient();
try {
    httpClient.setConnectionUrl("https://api.nal.usda.gov/fdc/v1/food/1750339?api_key=DEMO_KEY");
    httpClient.setRequestHeader("Accept", "application/json");
    String jsonResponse = httpClient.sendHttpRequest(HttpClient.HttpMethod.GET);
    Map<String, Object> map = JsonUtils.readObjectFromJsonString(jsonResponse, Map.class);
    System.out.println("fdcid: " + map.get("fdcId"));
    System.out.println("description: " + map.get("description"));
} catch (Exception e) {
    System.out.println(httpClient.getLastResponseCode() + " "
            + httpClient.getLastResponseMessage() + TextUtils.getStacktrace(e, false));
}

如果您運行此代碼,這將是 output:

fdcid: 1750339
description: Apples, red delicious, with skin, raw

HttpClientJsonUtilsTextUtils類都是我編寫和維護的 MgntUtils 開源庫的一部分。 這是庫的Javadoc如果你想要整個庫的源代碼,你可以在這里的 Github 上獲得它,而作為 Maven 工件的庫可以從 Maven Central here獲得

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM