2016-04-19 4 views
1

nodejs/expressjsを使用してWebアプリケーションのAPIを構築すると、サイトのタイトルや説明など、すべてのAPIにいくつかの変数を送信したいと考えています。exressjs内のすべてのルートに変数を送信する

もう使用されていないdynamicHelper()を使用して古いソリューションに遭遇しました。そうする新しいアプローチは何ですか?

+0

私たちが答えるには、この質問には詳細が不十分です。 「すべてのAPIにいくつかの変数を送信する」とはどういう意味ですか?サーバー内のすべてのルートがAPIか、API以外の経路がいくつかありますか? APIレスポンスを作成するためにどのようなコードを使用していますか?あなたはJSONを返すのですか? APIのレスポンスはどのようなものですか?典型的なAPIレスポンスのコードを表示して、特殊変数を追加した実際の応答を表示できますか?どのタイプの変数を追加したいですか? – jfriend00

答えて

2

最も簡単なことは、地元の人々(自動的にあなたのビューに表示されます)として応答オブジェクトにそれを添付するミドルウェアを挿入することです。ような何か:

app.get('/whatever', function(req,res){ 
    var json = {}; 
    // do whatever to build your json 
    json.metadata = res.locals; // or whatever the common stuff is 
    res.send(json); 
} 

この:

app.use(function(req,res,next) { 
    res.locals = { 
    title : 'your title', 
    description : 'your description' 
    }; 
    return next(); 
}); 

**各エンドポイントは、独自のオブジェクトのありそうな責任があるので、APIエンドポイントが を行うために持っているものを考慮するためにEDIT、あなたはまた、のような何かをするだろうjsonレスポンスの1つの部分にすべての共通のものを保持します。

+0

私はフロントエンドのすべてにangularjsを使用しています.expressjsアプリケーションはAPI用です。したがって、エクスプレスでビューエンジンを使用しないでください。 –

+0

@ JoshuaLeung - あなたが今述べたようなより多くの要件を持っているなら、その詳細をあなたの質問に入れてください。あなたの質問には、誰もが正しく答える方法を知るための十分な詳細が欠けています。 – jfriend00

+0

しかし、私はすでに段落の最初のものとして "nodejs/expressjsを使って私のWebアプリケーションのためのAPIを構築する"と言っています... –

-1

フロントエンド側(角js)にinterceptorsを入力して、リクエストAPIごとに複数の変数を送信してください。

次のコードでは、ヘッダーにタイトルと説明を送信しています。

module.factory('varInfoInterceptors', function($q) { 
    var sendInfoInjector = { 
     request: function(config) { 
       config.headers['x-headers-title'] = 'Test title'; 
       config.headers['x-headers-desc'] = 'This is test site'; 
      return config; 
     } 
    }; 
    return sendInfoInjector; 
}); 
module.config(['$httpProvider', function($httpProvider) { 
    $httpProvider.interceptors.push('varInfoInterceptors'); 
}]); 

あなただけreq.headersexpressルート

感謝を呼び出すことにより、サーバ側(nodejs/expressjs)で、これらの値を取得することができ、

ディネッシュ

1

あなたはあなたが言及しているのでExpressJのビューエンジンを使用していないので、私はあなたがただクライアント側のリダンダリングを行うためにangularJSに頼っていると仮定しています。これらのサーバー側のデータをhttpヘッダーに渡してから、クライアント側から読み取ることができます。お使いのルータで、あなたがこれを行うことができ、それを行うには、

app.use(function(req,res,next) { 
    res.set({ 
     'title': 'my title', 
     'description': '123' 
    }); 
    next(); 
}); 

次に、あなたのangularJSアプリでは、HTTPヘッダからそれらを読むことができます。

関連する問題