有没有人成功在XDK中为DreamFactory或Parse.com REST API创建新的Web服务?我能够通过curl从两个命令行获得响应,所以看起来它应该是可行的。到目前为止,我还没能使其中任何一个工作。
作为参考,这些是curl api调用:
DreamFactory (首先需要会话开启者调用):
$ curl -X POST http://ec2-[my server].compute.amazonaws.com:80/rest/user/session -H "X-DreamFactory-Application-Name: testapp" -d '{"email": "test@example.com", "password" : "[my password]"}'
(这会返回一个包含会话ID的大型JSON字符串,在下面使用)
$ curl -X GET http://ec2-[my server].compute.amazonaws.com:80/rest/testapp/roles -H "X- DreamFactory-Application-Name: testapp" -H "X-DreamFactory-Session-Token: [my session]"
{"record":[{"id":1,"rolename":"Agent","description":"agent"},{"id":2,"rolename":"Client","description":"client"},{"id":3,"rolename":"Admin","description":"administrator"}]}
Parse.com :
$ curl -X GET -H "X-Parse-Application-Id: [my appid]" -H "X-Parse-REST-API-Key: [my api key]" https://api.parse.com/1/classes/TestObject
{"results":[{"foo":"bar","createdAt":"2014-07-19T22:07:52.874Z","updatedAt":"2014-07-19T22:07:52.874Z","objectId":"jSpF1RrOy4"}]}
我是JSON的新手,所以我怀疑我的一个或多个apiconfig.json,testapp.json或testapp.js文件出了问题。我已经对它们进行了充分的实验,现在它们已经变得混乱,但如果有帮助我可以发布它们。我希望有人为这些API或类似API之一成功创建XDK Web服务,可以提供一些指导。
谢谢!
答案 0 :(得分:2)
从XDK支持工程师的HTML5开发论坛(http://go.shr.lc/1nr6fsT)回复单独的问题复制:
对于需要URL字符串中的两个键的API,请将这些字段添加到apiconfig.json文件中:
"auth": "key",
"keyParam": "apiKey",
"signature": "apiSecret"
可以在.js文件中以credentials.apiKey和credentials.apiSecret的形式访问键值。
对于通过标题需要2个密钥的API。将所需的标头放在变量key_info和.js文件中,使用:
return $.ajax({url: url,
data: key_info
});
在您发布的代码中,apiconfig.json文件中列出的服务名称是' parsedbtest'而文件名是' parsetestdb.js'和' parsetestdb.json'。 通过将apiconfig条目更改为:
来解决此问题{
"parsetestdb": {
"name": "test db parse.com",
"dashboardURL": "https://www.parse.com/docs/rest",
"auth": "key",
"keyParam": "apiKey",
"signature": "apiSecret"
}
}
然后你的parsetestdb.js将是:
(function (credentials) {
var exports = {};
exports.TestObject = function (params) {
var url = 'https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:javascript-key='+ credentials.apiKey +'@api.parse.com/1/classes/TestObject'; //Or credentials.apiSecret.
return $.ajax({url: url});
};
return exports;
})
您还可以使用params.objectId和params.foo输入其他参数。
此外,上面使用的方法名称是' TestObject'。这应该匹配.json文件中的方法名称(因此,没有空格)。所以parsetestdb.json将是:
{
"endpoints":[
{
"name":"Methods",
"methods":[
{
"MethodName":"TestObject",
"HTTPMethod":"GET",
"URI":"TestObject",
"RequiresOAuth":"N",
"parameters":[
{
"Name":"objectId",
"Required":"N",
"Location":"query",
"Type":"string"
},
{
"Name":"foo",
"Required":"N",
"Location":"query",
"Type":"string"
}
]
}
]
}
]
}
答案 1 :(得分:0)
我不相信您的问题与Intel-XDK有关,但发布一些代码可能有助于我们解决问题或提供一些指导。虽然,如果您更改了项目中的某些配置文件,那么您可能会遇到一些问题。
AJAX(异步JavaScript和XML)可用于与项目中的REST Web服务进行交互。 Stack Overflow或Google上有大量示例可帮助您向之前描述的两个Web服务发出HTTP请求。
答案 2 :(得分:0)
对于DreamFactory,请参阅here。
如果在本地MySQL数据库中有一个名为roles的表,那么GET的URL应为/ rest / db / roles。