2017-03-31 31 views
0

這可能是一個愚蠢的問題,我對NativeScript非常陌生。我有一個示例項目。試圖做一個簡單的獲取請求到本地 api。這是我的本地開發機器上的網站設置爲:使用本地API開發Nativescript應用程序

http://test-api.dev/api/v1

我想在我的本地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

所以我找到了問題,我想我會發布它。問題不是我的端點或我的NS安裝。這是因爲開箱即用的Android模擬器無法在您的開發計算機上運行本地站點,而無需對模擬器上的主機設置進行一些修改。這個過程在這裏解釋,但我想強調任何人有同樣的問題。

的Android模擬器不支持訪問本地計算機站點開箱的如下解釋:https://developer.android.com/studio/run/emulator-networking.html

它需要通過設備每次要設置除非有人有一個解決方案,只此設置有一次,我希望看到它在這裏分享。

有許多解決方案概述了類似的步驟,但我遇到過每一個問題。這裏是一個概述問題的要點: http://sadhanasiblog.blogspot.in/2012/07/local-environment-setup-for-android.html

感謝您的幫助。

0

return fetch(config.apiUrl + "events", { - 因此獲取請求期望第一個參數是一個URL。所以在config.apiUrl被定義的地方就是請求去的地方。您可以將其更改爲指向您正在運行的服務器的本地主機實例。

+0

是的。它被正確設置,並指向正確的本地API端點。數據也會返回有效的JSON對象。出於某種原因,這些日誌語句中沒有任何顯示。如果我將其更改爲外部API,如指南中的那樣,它可以正常工作。 – devcflynn

+0

我不確定在我的機器上是否有端口相關的東西。我在Unbuntu 16.04機器上運行LEMP env。 – devcflynn

+0

如果它正在返回數據,那麼一切都應該沒問題。你可以添加你運行時看到的輸出嗎? –

相關問題