ibm mobilefirst-Worklight http适配器问题



2个简单问题:

  1. 所有http请求都通过http适配器先通过工作灯服务器吗?

  2. 如果是这样的话,这是否意味着即使是对公共网站的http适配器请求,比如对雅虎网站的股价请求,也会先通过worklight服务器,然后再通过雅虎网站?如果是,那么我如何在不通过工作灯服务器的情况下发出http请求?我只想直接去雅虎网站,没有"中间"服务器(即workligth服务器(

1( 是否所有http请求都通过http适配器工作灯服务器优先?

是的。Worklight Adapters通过使用Mozilla Rhino在Worklight Server上执行JavaScript来工作。您可以在IBM Worklight入门模块中阅读有关适配器的更多信息。查看模块5和6,了解适配器特定的详细信息。下面还有一些代码示例,您可以尝试。API文档位于IBM信息中心。还有一篇DeveloperWorks文章介绍了您可能会发现有用的适配器。

2( 如果是这样的话,那么这是否意味着向公共网络发出http适配器请求该网站表示,向雅虎网站提出的股价请求也将获得通过先是worklight服务器,然后在雅虎网站旁边?

是的。

我只想直接去雅虎网站没有"中间"服务器(即workligth服务器(

IBM Worklight附带jQuery,您可以使用ajax方法。这里有一个例子:

WLJQ.ajax( "http://finance.yahoo.com/d/quotes.csv?s=DOW+MSFT+AAPL+GOOG&f=snl1" )
.done(function (data) {
    console.log(data);
});

请注意,WLJQ是Worklight附带的jQuery版本的命名空间。您可以通过执行以下操作来使用jQuery$var $ = WLJQ;var jQuery = WLJQ;

你应该得到这样的东西回来:

"DOW","Dow Chemical Comp",30.89
"MSFT","Microsoft Corpora",27.37
"AAPL","Apple Inc.",448.97
"GOOG","Google Inc.",790.13

如果您在客户端使用适配器API,则您的请求将通过Worklight服务器。您仍然可以从客户端发出AJAX请求并跳过服务器。本质上,你会像在Cordova一样发出服务器请求,这意味着使用白名单允许你的请求访问第三方服务器。

当然,您可以使用简单的jquery ajax调用直接访问它,而无需调用任何适配器函数。

$.ajax({
       url: url,
       data: data,
       success: success,
       dataType: dataType
});

$.get(url, function() {
    alert( "success" );
})
.done(function() {
    alert( "second success" );
})
.fail(function() {
    alert( "error" );
})
.always(function() {
   alert( "finished" );
});

是否所有http请求都通过http适配器通过工作灯服务器优先?

绝对不是,这完全取决于你。如果您使用的是HTTP适配器,那么HTTP请求将从Worklight Server启动,它将为您提供响应。

如果是这样的话,那么这是否意味着向公共网络发出http适配器请求该网站表示,向雅虎网站提出的股价请求也将获得通过先是worklight服务器,然后在雅虎网站旁边?如果是,那么如何我是否可以在不通过工作灯服务器的情况下发出http请求?我只想直接进入雅虎网站而不需要"中间人"服务器(即工作服务器(

如果您使用的是HTTP适配器,那么它将按照第一个答案通过Worklight Server。

如果你不想要中间服务器,那么你可以使用传统的方法来完成HTTP请求,否则你可以通过Javascript/Ajax层或本机(Android/iOS/Windows.(

当涉及到Worklight用于确保从注册设备启动请求的安全性时,适配器非常有用——通过交换设备令牌等来进行身份验证。

我认为您遗漏了关于WL中适配器体系结构的一个重要点。适配器位于服务器中,因此根据定义,您对它发出的任何请求都将"通过"服务器。但是,信息不会通过WAS(或Tomcat(服务器。

您不想使用适配器的原因是什么?我建议使用它,因为它可以更容易地从RESTful http调用或数据库查询中提取数据。

如果您确实想绕过适配器,则跨域授权存在问题。我在这方面没有太多经验,但你可以使用jQuery.ajax((.

之类的东西来绕过它

最新更新