2016-02-13 48 views
0

我正在通過我的服務的API調用,如下所示:如何在angularJS中傳遞查詢字符串參數以及如何在節點服務器上接收它?

$http.get('/api/subCategories/'+parent).success(function(response){ 
     $scope.subCategories = response; 
}); 

變量parent是我想作爲查詢字符串使用什麼。 我懷疑這不是傳遞查詢字符串的正確方法。它應該是像'/api/categories?parent='+parent。但我不確定。

然後,如何在app.js(即在服務器上)接收此查詢字符串。

回答

2

你是對的,你的第一個例子不是查詢字符串。 A query string始終以?爲前綴,如第二個示例中所示。至於在服務器上接受它的價值,我不確定你是否想知道如何解析它,或者如果你想知道如何設置整個服務器。如果你只是想分析的節點查詢字符串,你可以使用內置的urlquerystring模塊,像這樣:

const url = require('url'); 
const querystring = require('querystring'); 

let mockUrl = 'http://localhost:8080/api/categories?parent=babar'; 

let query = url.parse(mockUrl).query; // => 'parent=babar' 
let data = querystring.parse(query); // => { parent: 'babar' } 

console.log(data.parent); // => 'babar' 

如果你想知道如何建立一個最小的服務器將處理請求與查詢字符串,我會建議使用express而不是節點的內置功能。在與body-parser組合,你甚至不會擔心解析位:

'use strict'; 

const express = require('express'); 
const bodyParser = require('body-parser'); 
const app = express(); 

// Configure server to parse JSON for us 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: true})); 

// Handle request to our route 
app.get('/api/categories', (req, res) => { 
    // Do something with the value of the query property: 
    console.log(req.query.parent); 
}); 

// Start the server at http://localhost:8080 
app.listen(8080); 

更多細節在相當入門級,你可能會發現這個blog post有用:

+0

太感謝你了! !它確實工作! –