私は小グループのブログを書いています。アプリの特定のルーティングで問題が発生しました。明確にするために、私は簡単なデモアプリを作成しました。
//pathtest.js
//creating §
var express = require('express');
var app = express();
//setting express app
app.configure(function() {
app.use("/static", express.static(__dirname + '/static'));
app.use(express.bodyParser());
});
app.listen(3000);
//serving hashtag requests like /music, /photo, /personal, etc.
app.get('/music', function(req, res) {
res.send('music');
});
app.get('/photo', function(req, res) {
res.send('photo');
});
app.get('/personal', function(req, res) {
res.send('personal');
});
//... and +20+ more various hashtags
//serving SUBCATEGORIES for hashtags
//e.g.: /music/rock, /photo/digital
app.get('/:hashtag/:subcat', function(req, res) {
res.send('Subcategory ' + req.params.subcat + ' for hashtag ' + req.params.hashtag);
});
//SINCE THIS LINE IT DOESNT WORK 'CAUSE EVERY OF THE FOLLOWING REQUESTS CAN BE SERVED WITH ONE OF 4 UPPER CASES :(
//serving usernames of our service
//We put it apecially AFTER SERVING HASHTAGS as they have similar mask, first should be checked if it's hashtag
//e.g.: /bob_johnson
app.get('/:user', function(req, res) {
res.send('Welcome, ' + req.params.user + '!');
});
//serving single post service
//e.g.L: /163728
app.get('/:postid', function(req, res) {
res.send('This is post #' + req.params.postid);
});
//serving post commenting
//e.g.: /35345345/comment
app.get('/:postid/comment', function(req, res) {
res.send('Edit post #' + req.params.postid);
});
アフターライン
//SINCE THIS LINE IT DOESNT WORK 'CAUSE EVERY OF THE FOLLOWING REQUESTS CAN BE SERVED WITH ONE OF 4 UPPER CASES :(
どのリクエストも処理できません。以下のすべてのケースが上位ルートで提供される可能性があるためだと思います。そして実際、私が理解しているように、/bobと/234234を提供するNodeには実際の違いはありませんが、そのようなURLのshoulbは別々に提供されます!1つはユーザープロファイルを表示するためのもので、2つ目は投稿を表示するためのものです。また、/ 23423423 / commentは、投稿#23423423のコメントとして提供する必要がありますが、/ bob / commentは無視して、/bobにリダイレクトする必要があります。ただし、/ music –はユーザー名ではなく、ハッシュタグであり、/ music / comment –は投稿#musicのコメントではなく、ハッシュタグ音楽のサブカテゴリなどです。このリストは続行できます...
主な質問: Node.JSルートを(マスクによって)異なる方法でURLに類似させる方法は?
ありがとう!