首页 > 解决方案 > 如何从 Web 服务中调用 Web 服务

问题描述

我对 REST 世界非常陌生,或者实际上是 Java 的 WebApp 方面,所以请不要介意这是一个愚蠢的问题。我有一个网页,按下按钮将调用以下 JS 函数:

function testFunction(){
        $(document).ready(function() {
            $.ajax({
                url: "http://localhost:8080/test/webapi/myresource",
                type: 'get',
                success: function (data) {
                    console.log(data)
                }
                });
        });
    }

上面的 url 由我的 OWN Web 服务(在 java 中)处理,即上面的 GET 将调用以下 Web 服务:

@Path("myresource")
public class MyResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
    return "Got it!";
}}

我想在这里做的不是返回“得到它”,而是调用另一个涉及外部休息调用的javascript函数(专用于处理服务器类型的请求),例如:

        function externalResource() {
        $(document).ready(function() {
            $.ajax({
                url: "any_external_rest_call",
                type: 'get',
                dataType: 'json',
                success: function (data) {
                    document.getElementById('demo').innerHTML = "Perfect"
                }
                });
        });
    }

我想将数据从 externalResource 函数返回到 getIt() 到最后的 testFuntion(),我知道它可能,但在网上找不到很多细节。如果有人可以向我解释这将非常有帮助。

标签: javascriptjava

解决方案


您不能从 Java 中的 REST 方法调用 JavaScript 代码。但是,您可以使用ClientBuilderjavax.ws.rs.client软件包。

您的方法可能如下所示:

@Path("myresource")
public class MyResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {

        client = ClientBuilder.newClient();
        target = client.target("http://api.anotherRestService.com/details/")

        return target.request(MediaType.APPLICATION_JSON)
            .get();
    }
}

这只是一个例子,我没有在真实环境中尝试过,但这是你可以做到的。现在,您可以使用 JS 方法调用testFunctionJava 后端的 REST 方法。在您的 REST 方法getIt中,您使用创建的客户端调用另一个休息服务。第二次 rest 调用的结果将返回给您的 JS 方法testFunction


推荐阅读