我正在嘗試使用JavaScript HTTP適配器,以便從Bluemix中的Cloudant BD獲取一些數據。爲此,我使用TypeScript使用MFPF8和Ionic2。在JS HTTP適配器中爲MobileFirst添加參數8
因爲我需要從我以前不知道它的名稱的數據庫中獲取特定文檔,所以我需要一個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文檔之後,我做了以下調用中的適配器我離子供應商
@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);
})
});
}
}
閱讀知識中心,我發現了一些關於cal使用查詢字符串來查找參數,例如?params = ['value'],但是500代碼失敗。
請記住,我不在辦公室,因此我將在明天添加一個編輯,以便爲您提供有關服務器響應和MFP服務器日誌條目的更多信息。
但是,到目前爲止,我所做的事情有什麼不對嗎?
根據以下內容,應該不是這樣:'request.setQueryParameterValue(「['value1','value2']」,forName:「params」) '然後你在JavaScript中處理'params'適配器?請參閱:https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/using-the-mfpf-sdk/resource-request/ios/#javascript-adapters –
Mhhh,我沒有選擇使用該選項方法。最後一個文件是一個打字稿文件,從我看到你使用的是快速文件。 –
我錯過了什麼嗎?你的應用不是Swift應用嗎? –