0

要件: データのポストを使用してエンドポイントにデータを送信し、次のように開始日と終了日を URL のクエリ文字列に入れます。

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

データ ペイロードには、以下に示す locationID と Criteria のみが含まれます。

リソース定義

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 の不正なリクエストを受け取ります。

リクエスト URL: https://servername/bylocation/?startDate=&endDate=

明らかに、startDate および endDate パラメーターが入力されていません。

4

1 に答える 1

0

QueryString および Post データで AngularJS エンドポイントを使用する適切な方法

これは適切なテンプレート リソース パターンです。

ByLocationResource: $resource(

    ByLocationEndpoint,
    {
        startDate: '@startDate',
        endDate: '@endDate'
    },
    {
        query: {

            Criteria: '@Criteria',
            locationIds: '@locationIds',
            method: 'POST',
            isArray: true
        }
    }
),

これが呼び出しパターンです。最初の 2 つのパラメーターはエンドポイントのクエリ文字列パラメーターを入力し、パラメーターの 2 番目のセットは Post データを入力します。post パラメーターに基づいてデータをクエリしているため、メソッド query と名付けました。これにより、結果はクエリ文字列によって開始日と終了日によって制限されます。

MyService.ByLocation(
    {
        startDate: startDateTime,
        endDate: endDateTime
    },
    {
        Criteria: {

            Id: Id,
            Minutes: Minutes,
            Id2: Id2
        },
        locationIds: [5, 6, 7, 8]
    }
);

query メソッドを呼び出す MyService サービスのコード。

function ByLocation(dates, payload) {

    return ByLocationResource.query(dates, payload).$promise;
}
于 2019-02-22T18:13:25.980 に答える