我正在通过我的服务拨打api电话,如下:
$http.get('/api/subCategories/'+parent).success(function(response){
$scope.subCategories = response;
});
我想将变量parent
用作查询字符串。
我怀疑这不是传递查询字符串的正确方法。它应该是'/api/categories?parent='+parent
之类的东西。我不确定。
然后,我如何在app.js中接收此查询字符串(即在服务器上)。
答案 0 :(得分:2)
您的初始示例不是查询字符串,这是对的。 query string始终以?
为前缀,如第二个示例所示。至于在服务器上接收它的价值,我不确定你是否只想知道如何解析它,或者你是否想知道如何设置整个服务器。如果您只想解析Node中的查询字符串,可以使用内置的url和querystring模块,如下所示:
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而不是Node的内置功能。与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有用: