gpt4 book ai didi

java - 使用 Auth Tokens 的设计模式?

转载 作者:搜寻专家 更新时间:2023-11-01 03:38:25 25 4
gpt4 key购买 nike

我是一名客户端开发人员,正在转向服务器端开发。我遇到的一个常见问题是需要进行一次 API 调用(比如获取身份验证 token ),然后进行后续 API 调用以获取我想要的数据。有时,我需要连续调用两次 API 来获取数据,同时也没有授权 token 。

是否有通用的设计模式或 Java 库来解决这个问题?还是每次需要时都需要手动创建调用字符串?

编辑:我希望有这样的东西

CustomClassBasedOnJson myStuff = callAPI("url", getResponse("authURL"));

这将使用从“authURL”接收到的数据调用“url”。 这里的要点是我正在串接多个 url 调用,使用一个调用的结果来定义下一个调用。

最佳答案

在做Server端编程时,同步调用HTTP调用是可以接受的。

因此,正确的模式是简单地进行第一个调用,接收结果,然后在下一行中使用它。无需将调用分离到单独的线程或异步调用中,除非在 http 调用之间发生主要处理。

例如:

 JsonResponseEntry getJsonReportResponse() throws IOException {
String sReportURL = "https://someurl.com/v2/report/report?" +
"startts=" + getDateYesterday("ts") +
"&endts=" + getDateNow("ts") +
"&auth=" + getAuthCode();

URL reportURL = new URL(sReportURL);
URLConnection conn = reportURL.openConnection();
BufferedReader buf = new BufferedReader(new InputStreamReader(conn.getInputStream()));
ObjectMapper mapper = new ObjectMapper();
JsonNode reportResult = mapper.readTree(buf);
return convertJSonNodeToJsonResponseEntry(reportResult);
}

String getAuthCode() throws IOException {
String sReportURL = "https://someurl.com/auth";
URL reportURL = new URL(sReportURL);

HttpURLConnection conn = (HttpURLConnection) reportURL.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.connect();

String urlParameters = "username=myUserName&password=mypassword";
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
BufferedReader buf = new BufferedReader(new InputStreamReader(conn.getInputStream()));
ObjectMapper mapper = new ObjectMapper();
AuthResponse response = mapper.readValue(buf, AuthResponse.class);
return response.toString();
}

在需要响应的 URL 调用中同步调用函数 getAuthCode()。

关于java - 使用 Auth Tokens 的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22282875/

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