使用本地API开发Nativescript应用程序
这可能是一个愚蠢的问题,我对NativeScript非常陌生。我有一个示例项目。试图做一个简单的获取请求到本地 api。这是我的本地开发机器上的网站设置为:使用本地API开发Nativescript应用程序
我想在我的本地API访问端点,它似乎并没有什么回报。但我可以将API端点更改为不是本地API的东西,有时它会返回东西。
该API是一个Laravel/PHP API,我可以确认它是事实上返回有效的JSON,所以我不认为API是问题。这是我的文件。
var config = require("../../shared/config");
var fetchModule = require("fetch");
//var http = require("http");
var ObservableArray = require("data/observable-array").ObservableArray;
function GroceryListViewModel(items) {
var viewModel = new ObservableArray(items);
viewModel.load = function() {
// http.getJSON(config.apiUrl + "events").then(function(result) {
// console.log(JSON.stringify(result));
// }, function(error) {
// console.error(JSON.stringify(error));
// });
return fetch(config.apiUrl + "events", {
headers: {
//"Authorization": "Bearer " + config.token
"Content-Type": "application/json"
}
})
.then(handleErrors)
.then(function(response) {
console.log(response);
return response.json();
}).then(function(data) {
console.dump(data);
data.forEach(function(event) {
viewModel.push({
name: event.name,
id: event.id
});
});
});
};
viewModel.empty = function() {
while (viewModel.length) {
viewModel.pop();
}
};
return viewModel;
}
function handleErrors(response) {
if (!response.ok) {
console.log(JSON.stringify(response));
throw Error(response.statusText);
}
return response;
}
module.exports = GroceryListViewModel;
请容易对我,绝对寻求帮助虽然。谢谢大家。
所以我找到了问题,我想我会发布它。问题不是我的端点或我的NS安装。这是因为开箱即用的Android模拟器无法在您的开发计算机上运行本地站点,而无需对模拟器上的主机设置进行一些修改。这个过程在这里解释,但我想强调任何人有同样的问题。
的Android模拟器不支持访问本地计算机站点开箱的如下解释:https://developer.android.com/studio/run/emulator-networking.html
它需要通过设备每次要设置除非有人有一个解决方案,只此设置有一次,我希望看到它在这里分享。
有许多解决方案概述了类似的步骤,但我遇到过每一个问题。这里是一个概述问题的要点: http://sadhanasiblog.blogspot.in/2012/07/local-environment-setup-for-android.html
感谢您的帮助。
return fetch(config.apiUrl + "events", {
- 因此获取请求期望第一个参数是一个URL。所以在config.apiUrl被定义的地方就是请求去的地方。您可以将其更改为指向您正在运行的服务器的本地主机实例。
是的。它被正确设置,并指向正确的本地API端点。数据也会返回有效的JSON对象。出于某种原因,这些日志语句中没有任何显示。如果我将其更改为外部API,如指南中的那样,它可以正常工作。 – devcflynn
我不确定在我的机器上是否有端口相关的东西。我在Unbuntu 16.04机器上运行LEMP env。 – devcflynn
如果它正在返回数据,那么一切都应该没问题。你可以添加你运行时看到的输出吗? –