Java 使用身份验证令牌的设计模式?
我是一名客户端开发人员,正在转向服务器端开发。 我遇到的一个常见问题是需要进行一次API调用(比如获取身份验证令牌),然后进行后续API调用以获取所需的数据。有时,我需要连续对数据进行两次API调用,但也没有身份验证令牌 是否有一个通用的设计模式或Java库来解决这个问题?或者每次需要手动创建调用字符串时,是否需要手动创建调用字符串 编辑:我希望看到这样的东西Java 使用身份验证令牌的设计模式?,java,restful-authentication,Java,Restful Authentication,我是一名客户端开发人员,正在转向服务器端开发。 我遇到的一个常见问题是需要进行一次API调用(比如获取身份验证令牌),然后进行后续API调用以获取所需的数据。有时,我需要连续对数据进行两次API调用,但也没有身份验证令牌 是否有一个通用的设计模式或Java库来解决这个问题?或者每次需要手动创建调用字符串时,是否需要手动创建调用字符串 编辑:我希望看到这样的东西 CustomClassBasedOnJson myStuff=callAPI(“url”,getResponse(“authURL”)
CustomClassBasedOnJson myStuff=callAPI(“url”,getResponse(“authURL”)代码>
这将使用从“authURL”接收的数据调用“url”。
这里的要点是,我正在串接多个url调用,使用一个调用的结果来定义下一个调用。在进行服务器端编程时,同步调用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();
}
函数getAuthCode()在需要响应的URL调用中被同步调用。我不明白您的问题是什么。如果您想要oauth库,请搜索scribe或它的fork subscribe。@LeosLiterak我正在寻找更通用的东西。除非oauth库可用于非oauth方案?否。它只是从各种提供程序获取访问令牌的助手。这会阻止您执行您想要执行的操作吗?问题出在哪里?@JBNizet我不知道从哪里开始。我非常习惯于使用Oauth或Facebook等已有的库,这些库在幕后做了类似的事情。