这可能是一个愚蠢的问题,我对NativeScript很新。我有一个示例项目。尝试向本地 api执行简单的get请求。这是我本地开发机器上的网站设置:
我正在尝试访问本地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;
请放轻松,但我肯定会寻求帮助。提前谢谢大家。
答案 0 :(得分:0)
return fetch(config.apiUrl + "events", {
- 因此获取请求期望第一个参数是URL。因此,定义config.apiUrl的位置是请求的位置。您可以将其更改为指向正在运行的服务器的localhost实例。
答案 1 :(得分:0)
所以我发现了这个问题,以为我会发布它。问题不在于我的端点或我的NS安装。这是因为开箱即用的Android Emulators无法引用您的开发机器上运行的本地站点,而无需对模拟器上的主机设置进行一些修改。这个过程在这里解释,但我想强调任何有同样问题的人。
Android模拟器不支持开箱即用的本地计算机网站访问,如下所述:https://developer.android.com/studio/run/emulator-networking.html
需要通过设备 EVERYTIME 进行设置,除非有人有解决方案只设置一次,我很乐意在此处分享。
有几个解决方案概述了类似的步骤,但我每个问题都有问题。以下是概述问题要点的内容: http://sadhanasiblog.blogspot.in/2012/07/local-environment-setup-for-android.html
感谢您的帮助。