AngularJS如何从需要查询字符串参数和使用角度资源发布数据的URL中获取数据?

时间:2019-02-20 21:15:58

标签: javascript angularjs angularjs-ng-resource

要求:使用数据发布将数据发送到端点,然后将开始日期和结尾放入URL的查询字符串中,如下所示:

https://server/byLocation?startDate=2019-01-01&EndDate=2020-01-01

数据有效载荷仅具有如下所示的locationID和条件。

资源定义

我也尝试过将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端点中的查询字符串与发布数据结合在一起?

服务:

    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错误的请求,如下所示:

请求网址:https://servername/bylocation/?startDate=&endDate=

很显然,startDate和endDate参数没有填写。

1 个答案:

答案 0 :(得分:0)

将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;
}