AngularJS 如何使用 angular 资源从需要查询字符串参数和 post 数据的 URL 获取数据?
AngularJS How do I get data from a URL requiring both querystring parms and post data using angular resource?
要求:使用 post 数据将数据发送到端点并将开始日期和结束日期放入 url 的查询字符串中,如下所示:
https://server/byLocation?startDate=2019-01-01&EndDate=2020-01-01
数据负载只有如下所示的位置 ID 和条件。
资源定义
我也试过将 startDate 和 endate 移出查询对象。
ByLocationResource: $resource(
ByLocationEndpoint,
null,
{
query: {
startDate: '@startDate',
endDate: '@endDate',
locationIds: ['@locationIds'],
Criteria: '@Criteria',
method: 'POST'
}
}
),
端点定义
var ByLocationEndpoint = https:/servername/byLocation/?startDate=:startDate&endDate=:endDate');
如何将 URL 端点中的查询字符串与 post 数据结合起来?
服务:
function ByLocation(startDate, endDate, Criteria, locationIds) {
_ByLocationResource.query(
{
startDate:startDate,
endDate:endDate,
locationIds: [locationIds],
Criteria: Criteria
});
}
我试着把事情混在一起,就像这样:
function ByLocation(startDate, endDate, Criteria, locationIds) {
_ByLocationResource(startDate,EndDate).query(
{
locationIds: [locationIds],
Criteria: Criteria
});
}
我是否被迫使用 $http 而不是端点和资源?
浏览器收到 400 错误请求,如下所示:
请求URL:https://servername/bylocation/?startDate=&endDate=
显然没有填写开始日期和结束日期参数。
使用 AngularJS 端点与 QueryString 和 Post 数据的正确方法
这是正确的模板资源模式:
ByLocationResource: $resource(
ByLocationEndpoint,
{
startDate: '@startDate',
endDate: '@endDate'
},
{
query: {
Criteria: '@Criteria',
locationIds: '@locationIds',
method: 'POST',
isArray: true
}
}
),
这是调用模式,前两个参数填写端点的查询字符串参数,而第二组参数填写 Post 数据。我们将方法命名为 query,因为我们是根据 post 参数查询数据,因此结果受查询字符串的开始和结束日期限制。
MyService.ByLocation(
{
startDate: startDateTime,
endDate: endDateTime
},
{
Criteria: {
Id: Id,
Minutes: Minutes,
Id2: Id2
},
locationIds: [5, 6, 7, 8]
}
);
调用查询方法的MyService服务中的代码。
function ByLocation(dates, payload) {
return ByLocationResource.query(dates, payload).$promise;
}
要求:使用 post 数据将数据发送到端点并将开始日期和结束日期放入 url 的查询字符串中,如下所示:
https://server/byLocation?startDate=2019-01-01&EndDate=2020-01-01
数据负载只有如下所示的位置 ID 和条件。
资源定义
我也试过将 startDate 和 endate 移出查询对象。
ByLocationResource: $resource(
ByLocationEndpoint,
null,
{
query: {
startDate: '@startDate',
endDate: '@endDate',
locationIds: ['@locationIds'],
Criteria: '@Criteria',
method: 'POST'
}
}
),
端点定义
var ByLocationEndpoint = https:/servername/byLocation/?startDate=:startDate&endDate=:endDate');
如何将 URL 端点中的查询字符串与 post 数据结合起来?
服务:
function ByLocation(startDate, endDate, Criteria, locationIds) {
_ByLocationResource.query(
{
startDate:startDate,
endDate:endDate,
locationIds: [locationIds],
Criteria: Criteria
});
}
我试着把事情混在一起,就像这样:
function ByLocation(startDate, endDate, Criteria, locationIds) {
_ByLocationResource(startDate,EndDate).query(
{
locationIds: [locationIds],
Criteria: Criteria
});
}
我是否被迫使用 $http 而不是端点和资源?
浏览器收到 400 错误请求,如下所示:
请求URL:https://servername/bylocation/?startDate=&endDate=
显然没有填写开始日期和结束日期参数。
使用 AngularJS 端点与 QueryString 和 Post 数据的正确方法
这是正确的模板资源模式:
ByLocationResource: $resource(
ByLocationEndpoint,
{
startDate: '@startDate',
endDate: '@endDate'
},
{
query: {
Criteria: '@Criteria',
locationIds: '@locationIds',
method: 'POST',
isArray: true
}
}
),
这是调用模式,前两个参数填写端点的查询字符串参数,而第二组参数填写 Post 数据。我们将方法命名为 query,因为我们是根据 post 参数查询数据,因此结果受查询字符串的开始和结束日期限制。
MyService.ByLocation(
{
startDate: startDateTime,
endDate: endDateTime
},
{
Criteria: {
Id: Id,
Minutes: Minutes,
Id2: Id2
},
locationIds: [5, 6, 7, 8]
}
);
调用查询方法的MyService服务中的代码。
function ByLocation(dates, payload) {
return ByLocationResource.query(dates, payload).$promise;
}