gpt4 book ai didi

java - 如何在 Java 中读取和存储 API 调用/响应

转载 作者:行者123 更新时间:2023-12-02 03:18:45 25 4
gpt4 key购买 nike

我正在尝试创建一个 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 响应生成的数据。

关于java - 如何在 Java 中读取和存储 API 调用/响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56942391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com