2012-10-09 6 views
27

以下はうまくいきますが、これは$ httpProviderをグローバルに変更していると思っています。

代わりにこれを行うにはどうしますか?

... 
    .factory('Login', function($resource){ 
     var resource = $resource('/adminui/login',{},{ 
      post:{ 
       method:"POST", 
       isArray:false, 
       headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} // ignored 
      }, 
     }); 
     return resource; 
    }) 

"headers"パラメータは無視されているようです。リクエストはまだ

Content-Type:application/json;charset=UTF-8

でOKヘッダーのための私の値はありますか?

+0

これを見ることができます:https://github.com/angular/angular.js/issues/736 – Tosh

答えて

63

私は、1.1.3が実際にこれをサポートしていることを確認しました。ただし、リソースサービスの1.1.3バージョンも取得する必要があります。クイックテスト:

angular.module('myApp', ['ngResource']). 
    config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/', {templateUrl: 'partials/partial1.html',controller: 'MyController'}); 
    $routeProvider.otherwise({redirectTo: '/'}); 
    }]) 

    .controller("MyController", function($scope, Bug) { 
    Bug.post({test:"test"}); 
    }) 

    .factory('Bug', function($resource){ 
    var resource = $resource('/bug',{},{ 
     post:{ 
      method:"POST", 
      isArray:false, 
      headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} 
     }, 
    }); 
    return resource; 
}); 

これは、に設定ヘッダを持つリクエストを行います(Chromeを使用して確認):

Content-Type:application/x-www-form-urlencoded; charset=UTF-8 

簡単なメモは、私がangular-のダウンロードを見つけることができませんでしたresource.jsので、githubのウェブサイトにダウンロードしてダウンロードする必要がありました。それはhereです。

いくつかのくすみのために、私はフィドルを作成しました。 POST呼び出しに失敗しますが、ヘッダーが正しく設定されていることに注意してください。 Example Fiddle

+0

素晴らしい!ありがとう:) – DanH

20

開発文書(10月12日現在)では、$リソースでオーバーライドヘッダーが可能であることが示されていますが、まだリリースされていません(v1.0.2またはv1.1.0)。しかし、この機能はv1.0.xとmasterブランチにあります。この機能を利用するには、v1.0.xブランチからビルドすることを検討してください。

構築する方法: http://docs.angularjs.org/#H1_4

また、スナップショットビルドから引くことができます:この機能は、次のリリースになりますようにhttp://code.angularjs.org/snapshot/

が見えます。

+0

私はそのビルドをやってみます。リンクの+1。ありがとう! – Shanimal

+6

-1をAngularに送信すると、不可能なことを試すことができます。 – Lee