14

私は AngularJS を初めて使用し、サーバーと対話するアプリを構築しています。サーバーには REST API がありますが、一部のメソッドにはプレーン テキストで応答し、他のメソッドには JSON で応答します。AngularJS の$resourceサービスを使用して単純な http リクエスト メソッドを実装しました。

ただし、サーバー レスポンスがプレーン テキストの場合、AngularJS のレスポンスは、レスポンス ワードの各文字に対して 1 つのエントリを持つオブジェクトです。どうすればこれを(良い意味で)回避できますか?理想的には、プレーン テキストを期待するタイミングと JSON を期待するタイミングをサービスに伝え、両方のケースで適切にフォーマットされた応答を取得できるようにしたいと考えています。

4

2 に答える 2

16

ドキュメントによると、レスポンスをjsonからjavascriptオブジェクトに変換するデフォルトの動作をオーバーライドできるリソースのカスタムアクションを指定します。transformResponse 関数の「データ」パラメーターには、テキスト ペイロードが含まれます。

この場合、transformResponse メソッドは文字列そのものではなく、文字列を含むオブジェクトを返します。そうしないと、文字列を配列に変換しようとするからです。

    var Stub = $resource('/files/:filename', {}, {'getText': {
        transformResponse: function(data, headersGetter, status) {
            return {content: data};
        }
    }});

リソースを使用するには、単純な古い get() ではなく、カスタムの getText() アクションを呼び出します。

    Stub.getText({'filename': 'someFile.txt'}, function(response) {
        console.info("Content of someFile.txt = " . response.content);
    });

これは古い投稿ですが、新しい回答に値すると考えました。

于 2015-05-08T08:31:02.850 に答える