반응형
Express에서 루트 후 선택적 매개 변수로 경로 제어를 전달합니까?
간단한 URL 단축 앱을 개발 중이며 다음과 같은 급행 경로가 있습니다.
app.get('/', function(req, res){
res.render('index', {
link: null
});
});
app.post('/', function(req, res){
function makeRandom(){
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 3 /*y u looking at me <33??*/; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
var url = req.body.user.url;
var key = makeRandom();
client.set(key, url);
var link = 'http://50.22.248.74/l/' + key;
res.render('index', {
link: link
});
console.log(url);
console.log(key);
});
app.get('/l/:key', function(req, res){
client.get(req.params.key, function(err, reply){
if(client.get(reply)){
res.redirect(reply);
}
else{
res.render('index', {
link: null
});
}
});
});
/l/
내 경로 에서을 제거하고 (내 URL을 더 짧게 만들기 위해) : key 매개 변수를 선택 사항으로 만들고 싶습니다. 이것이 올바른 방법입니까?
app.get('/:key?', function(req, res, next){
client.get(req.params.key, function(err, reply){
if(client.get(reply)){
res.redirect(reply);
}
else{
next();
}
});
});
app.get('/', function(req, res){
res.render('index, {
link: null
});
});
내 /
경로가 "연결"될 경로 임을 지정 해야하는지 확실하지 않습니다 . 그러나 나의 유일한 다른 경로는 업데이트 된 포스트 /
경로이기 때문에 잘 작동 할 것이라고 생각합니다.
그것은 client.get이 첫 번째 매개 변수로 undefined를 전달할 때 수행하는 작업에 따라 작동합니다.
다음과 같은 것이 더 안전합니다.
app.get('/:key?', function(req, res, next) {
var key = req.params.key;
if (!key) {
next();
return;
}
client.get(key, function(err, reply) {
if(client.get(reply)) {
res.redirect(reply);
}
else {
res.render('index', {
link: null
});
}
});
});
콜백 내에서 next ()를 호출하는 데 문제가 없습니다.
According to this, handlers are invoked in the order that they are added, so as long as your next route is app.get('/', ...) it will be called if there is no key.
반응형
'code' 카테고리의 다른 글
무엇을 선택해야하나요 : MongoDB / Cassandra / Redis / CouchDB? (0) | 2020.10.26 |
---|---|
MVC 패턴과 스윙 (0) | 2020.10.26 |
Get-ChildItem 재귀 수준 제한 (0) | 2020.10.26 |
드롭 다운 방법 (0) | 2020.10.26 |
뒤로 버튼과 같은 버튼을 사용하여 현재 조각을 닫는 방법은 무엇입니까? (0) | 2020.10.25 |