gpt4 book ai didi

javascript - 在 MobileFirst 8 的 JS HTTP 适配器中添加参数

转载 作者:行者123 更新时间:2023-12-03 06:32:30 25 4
gpt4 key购买 nike

我正在尝试使用 JavaScript HTTP 适配器从 Bluemix 中的 Cloudant BD 获取一些数据。为此,我将 MFPF8 和 Ionic2 与 TypeScript 结合使用。

由于我需要从数据库中获取一个我之前不知道其名称的特定文档,因此我需要一个 HTTP 适配器,让我可以将文件名作为参数发送。

我有以下适配器实现文件:

function getMenus() {
var input = {
method : 'get',
returnedContentType : 'json',
path : 'menus/_all_docs?descending=true'
};

return MFP.Server.invokeHttp(input);
}

function getSpecificMenu(menuName) {

var input = {
method : 'get',
returnedContentType : 'json',
path : 'menus/'+menuName
};

return MFP.Server.invokeHTTP(input);

}

这是adapter.xml

<mfp:adapter name="menus"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mfp="http://www.ibm.com/mfp/integration"
xmlns:http="http://www.ibm.com/mfp/integration/http">

<displayName>menus</displayName>
<description>menus</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>https</protocol>
<domain>bluemixcloudanthost.com</domain>
<port>443</port>
<connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds>
<socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds>
<maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode>

<authentication>
<basic/>
<serverIdentity>
<username>user</username>
<password>pass</password>
</serverIdentity>
</authentication>

</connectionPolicy>
</connectivity>

<procedure name="getMenus" secured="false"/>
<procedure name="getSpecificMenu" secured="false"/>

</mfp:adapter>

因此,按照 API 文档,我执行了以下操作来调用我的 ionic 提供程序中的适配器

@Injectable()
export class MenuListingService {
data: any;

constructor() {
console.log('---> Constructing menu list adapter');
this.data = null;
}

load(menuTitle: string) {
console.log('---> Request '+menuTitle+' Menu');
if (this.data) {
// already loaded data
return Promise.resolve(this.data);
}

// don't have the data yet
return new Promise(resolve => {

let menuRequest = new WLResourceRequest("/adapters/menus/getSpecificMenu", WLResourceRequest.GET);
menuRequest.setQueryParameter('menuName', menuTitle);

menuRequest.send().then((response) => {
console.log('---> Current menu response received');
this.data = response.responseJSON.offers;
resolve(this.data);
})

});
}
}

在知识中心阅读时,我发现了一些有关使用查询字符串调用参数的内容,例如 ?params=['value'],但它失败并显示 500 代码。

请记住,我不在办公室,所以明天我将添加编辑内容,以便为您提供更多信息,包括服务器响应和 MFP 服务器日志条目。

但是,就目前而言,我所做的有什么问题吗?

最佳答案

请参见此处:https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/using-the-mfpf-sdk/resource-request/javascript/#setqueryparameter

更具体地说:

JavaScript adapters use ordered nameless parameters. To pass parameters to a Javascript adapter, set an array of parameters with the name params: resourceRequest.setQueryParameter("params", "['value1', 'value2']");

您缺少的是使用“params”而不是 menuRequest.setQueryParameter('menuName', menuTitle);

关于javascript - 在 MobileFirst 8 的 JS HTTP 适配器中添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38387011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com