javascript - 如何从 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(),我知道它可能,但在网上找不到很多细节。如果有人可以向我解释这将非常有帮助。
解决方案
您不能从 Java 中的 REST 方法调用 JavaScript 代码。但是,您可以使用ClientBuilder
该javax.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 方法调用testFunction
Java 后端的 REST 方法。在您的 REST 方法getIt
中,您使用创建的客户端调用另一个休息服务。第二次 rest 调用的结果将返回给您的 JS 方法testFunction
。
推荐阅读
- gnuradio-companion - 在 GNU Radio Companion 中,Signal Source 模块上的 Gray Frequency 选项卡是什么?
- java - JDB 中每个方法的入口断点
- flutter - 如何在 Dart/Flutter 中显示两个十进制值?
- python - ¿我怎样才能绕过这个“未声明”的错误?
- assembly - 将结构字符数组与汇编中的字符指针进行比较
- mysql - MySQL 连接失败 - 超过“max_user_connections”个活动连接
- angular-elements - 角度自定义元素,获取元素未找到错误
- python - 使用 pandas 以小数增量计算分箱平均值
- ios - 使用百分比值创建 UIStackView 以进行分配
- c# - 在本地制作 NuGet 包的依赖项