Node.js/Node.js μ‹€μŠ΅

sementic url μ μš©ν•΄λ³΄κΈ°

λŒ•λŒ•μ΄λ°œπŸΎ 2018. 10. 10. 19:05


node js 곡뢀λ₯Ό ν•˜λ©΄μ„œ μ΄ˆλ°˜μ— sementic url의 ν˜•νƒœλ₯Ό κ³΅λΆ€ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.(http://bubobubo003.tistory.com/21?category=779547) 코딩을 항상 λΌμš°ν„° 방식(?) 으둜만 ν•˜λ‹€λ³΄λ‹ˆ app.jsνŒŒμΌμ—λΌμš°ν„°λŠ” κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ λŠ˜μ–΄λ‚˜κ³  연관이 μžˆλŠ” νŽ˜μ΄μ§€λ₯Ό ν•˜λ‚˜ν•˜λ‚˜ λΌμš°ν„°λ₯Ό λ‹€ λ§Œλ“œλŠ”κ±΄ μ’€ μ•„λ‹ˆλΌκ³  생각이 λ“€μ–΄μ„œ μ‹œλ©˜ν‹± url을 μ΄μš©ν•˜μ—¬ μ›ΉνŽ˜μ΄μ§€μ— μ μš©μ„ ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 이런 상황을 κ°€μ •ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 



이런 κ²Œμ‹œνŒμ΄ μžˆλŠ”λ°(λ¬Όλ‘  μ΄λ ‡κ²Œ ν—ˆμ ‘ν•œ κ²Œμ‹œνŒμ€ μ—†κ² μ§€λ§Œ..)  ν•΄λ‹Ή μž‘μ„±κΈ€λ‘œ 듀어갔을 λ•Œ url을 λΌμš°ν„°λ‘œ ν•˜λ‚˜ν•˜λ‚˜ λ‹€ μž‘μ„±ν•˜λ €λ©΄κ²Œμ‹œκΈ€μ˜ 개수만큼 app.get()을 ν†΅ν•΄μ„œ ν•  μˆ˜λŠ” 없을 κ²ƒμž…λ‹ˆλ‹€. κ·Έλž˜μ„œ ν˜„μž¬ commuityλΌλŠ” 첫번째 url λ’€λ‘œ 'κ·œμΉ™μ„±μ΄ μžˆλŠ” λ¬Έμžλ‚˜ μˆ«μžκ°€ λ“€μ–΄κ°€λ©΄ μ’‹κ² λ‹€' 라고 생각이 λ“€μ—ˆλŠ”λ°μš” μ΄λŸ°μ‹μœΌλ‘œ 말이죠



num1μ΄λΌλŠ” 글에 μ‹€μ œλ‘œ μž‘μ„±λ˜μ–΄μžˆλŠ” λ°μ΄ν„°μž…λ‹ˆλ‹€. url을 보면 commuity url λ’€λ‘œ /22 λΌλŠ” μˆ«μžκ°€ λ“€μ–΄κ°„ 것을 λ³Ό 수 μžˆλŠ”λ°μš” url만 보고도 commuity νŽ˜μ΄μ§€μ— μžˆλŠ” 22번째 κΈ€? μ •λ„λ‘œ 해석이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 




μ €λŠ” 기쑴의 commuity λΌμš°ν„°λ₯Ό μ΄λŸ°μ‹μœΌλ‘œ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.


1
2
3
4
5
6
7
8
9
10
app.get('/commuity',function(req,res){
    board.boardLoadFunction(function(result){
        var jsonStr = JSON.stringify(result);
        if(result.length==0)
            res.render('commuity',{data:0})
        else
            res.render('commuity',{data:jsonStr})
    })
});
 
cs


λ‹€λ₯Έκ±΄ λ‹€ κ·Έλ ‡λ‹€μΉ˜κ³  commuityλΌλŠ” νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ ν•˜κ² μ£  기타 λ‹€λ₯Έ λ³€μˆ˜λ“€μ€ 개인적인 μž‘μ—…μœΌλ‘œ 인해 λ“€μ–΄κ°„ κ²ƒμž…λ‹ˆλ‹€. 그러면 κ²°κ³Όμ μœΌλ‘œλŠ” localhost:3000/commuity λΌλŠ” νŽ˜μ΄μ§€λ‘œλ§Œ 접속이 κ°€λŠ₯ν•  κ²ƒμž…λ‹ˆλ‹€. 그러면 κΈ€ ν•˜λ‚˜ν•˜λ‚˜λ„ νŽ˜μ΄μ§€κ°€ λ§Œλ“€μ–΄μ Έμ•Όν•˜λŠ”λ° 기본적으둜 κ²Œμ‹œνŒ 글은 λ˜‘κ°™μ€ νŽ˜μ΄μ§€μ— 제λͺ©κ³Ό λ‚΄μš©λ§Œ λ‹€λ₯Έ ν˜•νƒœμΌ κ²ƒμž…λ‹ˆλ‹€. κ·Έλž˜μ„œ μΆ”κ°€μ μœΌλ‘œ sementic urlν˜•μ‹μ„ λ§Œλ“€κΈ°μœ„ν•œ λΌμš°ν„°λ₯Ό ν•˜λ‚˜ 더 λ§Œλ“€μ–΄μ€λ‹ˆλ‹€.



1
2
3
4
5
6
7
8
9
app.get('/commuity/:id',function(req,res){
    var id = req.params.id;
    models.Board.findAll({
        where: {'id':id}
    }).then(function(result){
        var jsonObj = JSON.stringify(result)
        res.render('commuity_detail',{data:jsonObj})
    })
})
cs


기쑴에 λΌμš°ν„°μ˜ μ£Όμ†Œ 뒀에 /:id λΌλŠ” ν˜•νƒœλ‘œ μΆ”κ°€λ˜μ—ˆλŠ”λ° μ—¬κΈ°μ„œλŠ” 숫자 값에 λ”°λΌμ„œ λ‹€λ₯Έ 데이터λ₯Ό 보여주렀고 ν•©λ‹ˆλ‹€. 



[ commuity.pug ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function(){
        var data = !{data}
        var len = Object.keys(data).length
        var tbody = document.getElementById('tbody');
        var len = 1
        if(data==0)
            len = 1
        else{
            len = Object.keys(data).length
            tbody = document.getElementById('tbody');
            for(var i=0;i<len;i++){
                tbody.innerHTML += "<th>"+data[i].name+"</th>"+"<th><a id=link"+i+" href=''>"+data[i].subject+"</a></th>"
                document.getElementById("link"+i).setAttribute('href','commuity/'+data[i].id)
            }
        }
    });
 
cs


μ½”λ“œμ˜ μ „λΆ€κ°€ μ•„λ‹ˆλΌ μ’€ 가독성이 λ–¨μ–΄μ§€λŠ”λ° 어쨋든 μ€‘μš”ν•œ 뢀뢄은 setAttribute λΆ€λΆ„μž…λ‹ˆλ‹€. aνƒœκ·Έμ˜ href 값을 λ³€κ²½ν•΄μ£ΌλŠ”λ°commuity μ£Όμ†Œ λ’€λ‘œ νŠΉμ • 숫자 값을 κ°–κ²Œλ©λ‹ˆλ‹€. 예λ₯Όλ“€λ©΄ http://localhost:3000/commuity/20 κ³Ό 같이 말이죠 κ²Œμ‹œνŒμ˜ 글이 μ—¬λŸ¬κ°œμ΄λ‹€λ³΄λ‹ˆ λ°˜λ³΅λ¬Έλ„ μ“°κ³  이 데이터듀은 제 DBμ—μ„œ λ½‘μ•„μ“°λŠ” 터라 μ½”λ“œκ°€ λ°±μ—”λ“œ νŒŒμΌμ΄λž‘ μ•½κ°„ λ³΅μž‘ν•˜κ²Œ μ–½ν˜€μžˆμŠ΅λ‹ˆλ‹€. μ•„λ¬΄νŠΌ setAttribute둜 인해 각각의 κ²Œμ‹œκΈ€λ“€μ€ sementic url ν˜•νƒœμ˜ 링크 값을 κ°–κ²Œ λ©λ‹ˆλ‹€. 

κ·Έλ ‡κ²Œλ˜λ©΄ app.js νŒŒμΌμ—μ„œ app.get('/commuity/:id',function(req,res){ 이 λΆ€λΆ„μœΌλ‘œ λ“€μ–΄μ˜€κ²Œ 되겠죠commuityλΌμš°ν„°μ—μ„œλŠ” commuity νŽ˜μ΄μ§€λ₯Ό ν˜ΈμΆœν–ˆλ‹€λ©΄ sementic url λΌμš°ν„°μ—μ„œλŠ” commuity_detail νŽ˜μ΄μ§€λ₯Ό

λ Œλ”λ§ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 그런데 URLμ£Όμ†ŒλŠ” localhost:3000/commuity_detail 이 μ•„λ‹ˆλΌ

localhost:3000/commuity/22 와 같이 ν‘œν˜„μ΄ 되죠 commuity νŽ˜μ΄μ§€μ—μ„œ νŠΉμ • 값에 따라 λ‹€λ₯Έ 데이터λ₯Ό

μ…‹νŒ…ν•˜μ—¬ λ³΄μ—¬μ£Όκ²Œ λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€.


            


λ³΄μ‹œλ©΄ 같은 URL ν˜•μ‹μ— 뒀에 λ˜‘κ°™μ€ html νŽ˜μ΄μ§€ 폼을 μ“°λŠ”λ° 숫자 값에 λ”°λΌμ„œ λ‹€λ₯Έ 데이터 λ‚΄μš©μ„ κ°–κ²Œ ν•΄μ£ΌλŠ” 것을

λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜‘κ°™μ€ 폼에 λ‚΄μš©λ§Œ λ°”λ€ŒλŠ” ν˜•μ‹μ„ κ°€μ§ˆ λ•Œ sementic url 방식을 νƒν•˜λ©΄ 쒋을 λ“― ν•©λ‹ˆλ‹€.