2016-05-04 10 views
1

にページをレンダリング:app.use( '/ API')場合にのみ、私は次のようしているエクスプレス4

app.js

... 

var api = require('./routes/api'); 
app.use('/', api); 
app.use('/api', api); 

./routes/api

... 

var router = express.Router(); 
router.get('/', passport.authenticate('bearer', { session: false }), function (req, res) { 
    res.json({ 
     msg: 'API is running' 
    }); 
}); 

//apiルートを区別するにはどうすればいいですか?012になったらページをレンダリングすることができますと私は/apiにいる場合JSONだけを返しますか?

私は非APIルートにjsonレスポンスをレンダリングするための関数を渡すことを考えていました。また、apiルートに別の関数がjsonレスポンスを表示するように考えていましたか?

これを行う方法は他にもありますか、それとも私はそれをやめようとしていますか?

ありがとうございます。あなたは同じルートファイル上で2つのパスをマウントしているのはなぜ

+0

あなたは[req.baseUrl](http://expressjs.com/de/api.html#req.baseUrl)を探していますが、これは使用しません。 '/ api/resource/id.json'と'/api/resource/id.xml'のレスポンス・タイプの違いに接尾辞を使用しない理由がありますか、タイプを決定するヘッダーを受け入れますか? –

+0

受け入れヘッダを見て、https://github.com/expressjs/express/blob/master/examples/error-pages/index.js#L65だから私は 'if(req.accepts( 'html'))を使うことができました。 {'私の'/'ルートのために' '/ api'の' '(req.accepts( 'json')){' – Sanction

+0

リクエストはしばしばその形式であるため、req.accepts(['json'、 'html']) 'ansは返される内容を確認する必要があります。Accept:application/json、*/*; q =あなたの最初の 'req.accepts( 'html')'も '*/*; q = 0.1'のために一致します。 –

答えて

1

はすなわち

var api = require('./routes/api'); 
app.use('/', api); 
app.use('/api', api); 

あなたが使用することができます。

var api = require('./routes/api'); 
var index = require('./routes/index'); 
app.use('/', index); 
app.use('/api', api); 

さて、あなたはこれらの2つのファイルで、あなたのルートを書くことができます。インデックスファイルの/domain.com/ URLに使用され、/ルートはdomain.com/api URLに使用されます。これで、両方の要求を異なる方法で処理できます。

インデックスファイルに両方のルートを指定することもできます(この場合、apiファイルを作成してパスにマウントする必要はありません)。例えば

router.get('/', function(req, res){ 
    // code for/path here 
}); 

router.get('/api', function(req, res){ 
    // code for /api path here 
}); 
+0

私はrouter.getなどの両端から同じ機能を実行したいのでしかし、私はまだ外部コントローラから同じ機能を呼び出すことができると思いますか? – Sanction

+0

@Sanction両方のルートで同じ関数を呼び出すことを意味します。/loginと/ api/login? –

1

本当に必要なものによって異なります。私のプロジェクトの1から

例:

我々は/を得たときに私たちは、あなたのHTMLファイルは可能性がありres.redirect('/client/')を使用/client/下のフロントエンドを持っていました。

それともres.render(view [, locals] [, callback])のようなものが収まるニーズ

は多くの可能性があるExpress Documentaion for resを見てみましょう。

関連する問題