使用 Local API 开发 Nativescript 应用程序
Developing Nativescript app with Local API
这可能是个愚蠢的问题,我对 NativeScript 还很陌生。我有一个示例项目。尝试向 local api 发出简单的获取请求。这是我本地开发机器上的网站设置:
我正在尝试访问本地 API 上的一个端点,但它似乎 return 什么都没有。但是我可以将 API 端点更改为非本地 API 的东西,有时它是 return 的东西。
API 是 Laravel/PHP api,我可以确认它实际上 return 有效 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;
请对我放宽点,不过一定要寻求帮助。提前谢谢大家。
return fetch(config.apiUrl + "events", {
- 所以获取请求期望第一个参数是 URL。所以定义 config.apiUrl 的地方就是请求的去向。您可以将其更改为指向您所在服务器的本地主机实例 运行.
所以我发现了这个问题,我想我会 post 它。问题不是我的端点或我的 NS 安装。这是因为 Android 开箱即用的模拟器无法在不对模拟器上的主机设置进行一些修改的情况下引用开发机器上的本地站点 运行。这里解释了这个过程,但我想向遇到同样问题的任何人强调。
Android 模拟器不支持开箱即用地访问本地机器站点 如下所述:https://developer.android.com/studio/run/emulator-networking.html
它需要通过设备每次设置,除非有人有解决方案只设置一次,我很乐意看到它在这里共享。
有几个解决方案概述了类似的步骤,但我对每一个都遇到了问题。这是概述问题要点的一个:
http://sadhanasiblog.blogspot.in/2012/07/local-environment-setup-for-android.html
感谢您的帮助。
这可能是个愚蠢的问题,我对 NativeScript 还很陌生。我有一个示例项目。尝试向 local api 发出简单的获取请求。这是我本地开发机器上的网站设置:
我正在尝试访问本地 API 上的一个端点,但它似乎 return 什么都没有。但是我可以将 API 端点更改为非本地 API 的东西,有时它是 return 的东西。
API 是 Laravel/PHP api,我可以确认它实际上 return 有效 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;
请对我放宽点,不过一定要寻求帮助。提前谢谢大家。
return fetch(config.apiUrl + "events", {
- 所以获取请求期望第一个参数是 URL。所以定义 config.apiUrl 的地方就是请求的去向。您可以将其更改为指向您所在服务器的本地主机实例 运行.
所以我发现了这个问题,我想我会 post 它。问题不是我的端点或我的 NS 安装。这是因为 Android 开箱即用的模拟器无法在不对模拟器上的主机设置进行一些修改的情况下引用开发机器上的本地站点 运行。这里解释了这个过程,但我想向遇到同样问题的任何人强调。
Android 模拟器不支持开箱即用地访问本地机器站点 如下所述:https://developer.android.com/studio/run/emulator-networking.html
它需要通过设备每次设置,除非有人有解决方案只设置一次,我很乐意看到它在这里共享。
有几个解决方案概述了类似的步骤,但我对每一个都遇到了问题。这是概述问题要点的一个: http://sadhanasiblog.blogspot.in/2012/07/local-environment-setup-for-android.html
感谢您的帮助。