2012-11-05 8 views
6

いくつかの理解の問題の後、私は本当に難しい問題にぶつかってきました。私はAngularJSの$リクエストを処理するカスタムヘッダーを取得できません。私の定義は次のようになります。また

$scope.re = $resource('/', { 
    callback: 'JSON_CALLBACK' 
    }, { 
    'updateCart': { 
     method: 'POST', 
     headers: { 
      'module': 'Shop', 
      'mod_id': '1', 
      'event': 'updateCart' 
     } 
    } 
}); 

ここJSFIDDLE

はアクティブまだこのIssueですか? カスタムヘッダーを設定する別の方法はありますか? 助けてくれてありがとう! :)

+0

バージョン1.1.1の病理学的なカーニング(2012-11-26)では、$ resourceのカスタムヘッダー問題をほぼ修正したようですが、そのバージョンは不安定であると考えられます...おそらく次の安定版がリリースされるまで待たなければなりませんこの安定したブランチ https://github.com/angular/angular.js/blob/master/CHANGELOG.md ($リソース:アクションごとのサポートカスタムヘッダー(fbdab513、#736))で – Preexo

+1

あなたの場合あなたが$ resourceではなく、より低いレベルの$ httpサービスを使用できることを認識していません。 $ httpはカスタムヘッダーをサポートしています。 –

答えて

3

私はカスタムヘッダーの$ httpにフォールバックする必要があると思います。私は同様の仕事を達成しようとしていましたが、$ resourceを使ってそれを行う方法はありません。

+4

グローバル '$ httpProvider.defaults.headers.post'オブジェクトで設定するヘッダは、すべての' $ http'呼び出しに適用されるだけでなく、すべての '$ resource'呼び出しにも適用されます。アプリケーション全体に対してグローバルに設定されている場合は、これが回避策になる可能性があります。 「HTTPヘッダーの設定」の[here](http://docs.angularjs.org/api/ng.$http)を参照してください。 – vsp

+0

実際には、私は '$ httpProvider.defaults.headers.post'を使用しました。私はそれを明らかにしたので、私はそれを言及しなかった。 –

+0

まあそれは吸う。 –

0

この投稿は少し古いですが、私は答えを探していた私のような他の人のために答える:

return $resource('api/people/:id', {id: '@id'}, { 
 
     min: { 
 
      data: '', 
 
      method: 'GET', 
 
      headers: {'Content-Type': 'application/min+json'}, 
 
      isArray: true 
 
     }, 
 
     update: { 
 
      method: 'PUT' 
 
     } 
 
    });

そうでない場合は設定していないため、dataを忘れないでくださいヘッダ。

export class ResourceBuilder { 
 

 
     static $inject = ['$resource']; 
 

 
     constructor(private $resource: ng.resource.IResourceService) { 
 
     } 
 

 
     private updateAction: ng.resource.IActionDescriptor = { 
 
      method: 'PUT', 
 
      isArray: false 
 
     }; 
 

 
     private minAction: any = { 
 
      data: '', 
 
      method: 'GET', 
 
      headers: {'Content-Type': 'application/min+json'}, 
 
      isArray: true 
 
     }; 
 

 
     public getResource(url: string, params?: Object): CrudResourceClass<any> { 
 
      let resource = this.$resource(url, params, { 
 
       update: this.updateAction, 
 
       min: this.minAction 
 
      }); 
 
      return <CrudResourceClass<any>> resource; 
 
     } 
 
    }

minActionはタイプanyであるng.resource.IActionDescriptorミスそのプロパティので、私はしないでください次のように

タイピングを愛する私のような人々のために

は、typescriptですにおけるビルダーを行うことができます彼らが忘れてしまったかどうかを知って、私はその問題を開けます。

私はそれが役に立ちそうです。

関連する問題