簡體   English   中英

如何使用Java讀取和存儲API調用/響應

[英]How to read, and store API calls/responses in Java

我正在嘗試創建一個Java程序,該程序將允許用戶在NoSQL數據庫中記錄和存儲API調用和響應。 基本上,我想接受呼叫名稱,參數和響應,並將其存儲在數據庫中。 這里的目的是讓用戶通過訪問數據庫中的數據來使用具有相同參數的調用,而不是進行實時API調用。 有沒有一種方法可以使用Java偵聽特定URL上的API調用,如果可以,該怎么做?

我不確定是否完全理解這樣做的原因。 但是,此問題的答案緊密取決於您要用於HTTP客戶端的技術,請求/響應的類型以及您要使用的NoSQL數據庫和策略。 作為建議,您可以使用所需的所有必填字段創建兩個數據類RequestDummyResponseDummy ,並使用諸如gson之類的序列化或反序列化它們,並將它們作為JSON文件存儲在數據庫中,以提高可讀性。 例如:

class RequestDummy {
    String url;
    String method;    // (GET|HEAD|POST|PUT|PATCH|DELETE)
    Map<String, String> headers;
    String payload;   // For (POST|PUT|PATCH) use Base64 to encode the binary to String
}

class ResponseDummy {
    Map<String, String> headers;
    int statusCode;
    String body;   // use Base64 to encode the binary to String
}

並在HTTP調用期間使用它們(簡要說明一下想法):

// Initialize RequestDummy
RequestDummy req ...

HttpURLConnection con = (HttpURLConnection) new URL(req.url).openConnection();

// optional default is GET
con.setRequestMethod(req.method);
req.headers.entrySet().forEach(e -> con.setRequestProperty(e.getKey(), e.getValue()));

int responseCode = con.getResponseCode();

BufferedReader in = new BufferedReader(new InputStreamReader());
byte[] data = con.getInputStream().readAllBytes() // Java9

// Initialize ResponseDummy
RequestDummy req ...

in.close();

在99%的存儲請求和響應是一個錯誤的設計。 作為建議,存儲任何用途的HTTP請求和響應不是一個好主意。 它們僅用於通信,您必須存儲HTTP請求基於的請求數據以及HTTP響應生成的數據。

暫無
暫無

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

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