Java 使用身份验证令牌的设计模式?

Java 使用身份验证令牌的设计模式?,java,restful-authentication,Java,Restful Authentication,我是一名客户端开发人员,正在转向服务器端开发。 我遇到的一个常见问题是需要进行一次API调用(比如获取身份验证令牌),然后进行后续API调用以获取所需的数据。有时,我需要连续对数据进行两次API调用,但也没有身份验证令牌 是否有一个通用的设计模式或Java库来解决这个问题?或者每次需要手动创建调用字符串时,是否需要手动创建调用字符串 编辑:我希望看到这样的东西 CustomClassBasedOnJson myStuff=callAPI(“url”,getResponse(“authURL”)

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

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

编辑:我希望看到这样的东西

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等已有的库,这些库在幕后做了类似的事情。