5

休憩サービスがあります:

http://localhost:3000/api/brands

Webブラウザからテストすると、うまく機能します。

私はAngularサービスでそれを使用します:

var motoAdsServices = angular.module('motoAdsServices', ['ngResource']);

motoAdsServices.factory('Brand', ['$resource', function($resource) {
    return $resource('http://localhost:3000/api/:id', {}, {
      query: {
        method: 'GET',
        params: {
          id: 'brands'
        },
        isArray: true
      }
    });
  }]);

リクエストURLにポート番号がないため、呼び出し時にエラーが発生します:

Request URL: http://localhost/api/brands

ポート番号がカットされているのはなぜですか?アンギュラーカット?

Angular docには次のように書かれています。

/user/:username のように、: で始まるパラメータを持つパラメータ化された URL テンプレート。ポート番号付きの URL (例: http://example.com:8080/api) を使用している場合は、それが尊重されます。

アップデート

私はAngularバージョン1.0.8を使用しています(@KayakDaveに感謝します)が、Angular docはバージョン1.2に適用されます。

4

3 に答える 3

10

コロンがあるため、:id のように取り除かれます。逃げればOKのはずです。http://localhost\:3000/api/:id代わりに試してください。ルートや他の場所でこれに再び遭遇する可能性があります。何かが変更された場合に備えて、この動作に関して問題があります。

更新しました: http://localhost\\:3000/api/:id

于 2013-11-11T15:21:07.057 に答える
2

angularはURLをインターセプトし、:anyを渡す必要があるパラメーターと見なすためです。

これをハッキングする簡単な方法は\:3000、URL を入力することです。

motoAdsServices.factory('Brand', ['$resource', function($resource) {
    return $resource('http://localhost:3000\:3000/api/:id', {}, {
        query: {
            method: 'GET',
            params: {
                id: 'brands'
            },
            isArray: true
        }
    });
}]);
于 2013-11-11T15:24:28.143 に答える