我正在使用AngularJS和NodeJS / Express设计二手车网站。数据库是MySQL(所以不是一个MEAN堆栈)。
我对Angular非常熟悉,但这是我第一次使用Express(过去我已经使用过JAX-RS)。
我没有问题,只发送一个或两个参数,例如
app.get('/api/images/:vehicleId', function (request, response) {
images.getThumbnailImage(request, response, connection, request.params.vehicleId);
});
但我不确定如何推进多个参数,其中一些是可选的。
客户端是使用TypeScript构建的。表单数据是通过TypeScript对象收集的,但我不确定发送多个参数的最佳做法是什么。
我想到的选项是:
1)。发送对象,然后使用它来构建查询:
return this.$http({
method: 'POST',
url: this.API_ADDRESS + 'vehicles/',
data: vehicleSearchModel,
headers: {
'Content-Type': 'application/json'
}
}).then((response: any) => {
return response.data;
});
使用body-parser从身体中检索它,即
request.body.data (or something similar)
或
2)。在网址中发送多个参数,即
app.get('/api/vehicles/:make/:model/:bodyStyle/:fuelType/:transmission/:minPrice/:maxPrice/:minYear/:maxYear/:counties', function (request, response) {
//Do something with request.params!!!
});
请告知。
答案 0 :(得分:0)
首先,您应该按照以下方式发出http post请求。
var data = {
make : make,
model : model,
fuelType : fueltype,
....
}
return this.$http({
method: 'POST',
url: this.API_ADDRESS + 'vehicles/',
data: vehicleSearchModel,
headers: {
'Content-Type': 'application/json'
}
}).then((response: any) => {
return response.data;
});
然后,您可以接收以下多个参数。
app.post('/api/vehicles/', function(req, res){
var make = req.body.make;
var model= req.body.model;
var bodyStyle= req.body.bodyStyle;
var fuelType= req.body.fuelType;
var transmission= req.body.transmission;
.....
});