ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ


์—ฌ๊ธฐ์„œ๋Š” URL์„ ํ†ตํ•ด์„œ ์—ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…๋‹ˆ๋‹ค. 

๊ทธ ์ค‘์—์„œ express ์—์„œ ์ œ๊ณตํ•˜๋Š” query ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

์ผ๋‹จ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ผ์šฐํ„ฐ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋Š” ๊ตฌ๋ฌธ์€ 

1
2
3
app.get('/topic',function(req,res) {
    res.send('hello');
});
cs

์ด์™€ ๊ฐ™์ด ์“ธ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 3000ํฌํŠธ๋กœ ์ ‘๊ทผํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— localhost:3000/topic ์˜ url๋กœ ์ ‘๊ทผํ–ˆ์„ ๋•Œ ์›นํŽ˜์ด์ง€์— hello ๋ผ๋Š” ๋ฌธ์ž์—ด์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. 

๊ธฐ์กด์— ์•Œ๊ณ ์žˆ๋˜ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋‹ค๋ฅธ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ๋ผ์šฐํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผ์„ ํ•ด์•ผํ–ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด '/form'
๋ผ์šฐํ„ฐ๋กœ ์ ‘๊ทผํ•œ๋‹ค๋˜๊ฐ€ ํ•˜๋ฉด localhost:3000/form ์œผ๋กœ ์ ‘๊ทผํ•  ๊ฒƒ์ด๋‹ค.

์ผ๋‹จ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์ด๋ผ๊ณ ํ•ด์„œ ํ•ด๋‹น ๋ผ์šฐํ„ฐ์—์„œ ์š”์ฒญํ•˜๋Š” ๊ฐ’์„ ์•Œ์•„๋‚ด๋Š”? ์ •ํ™•ํžˆ ์ด๋ก ์ ์ธ ์˜๋ฏธ๋ฅผ ๋”ฐ์ง€์ž๋ฉด
'๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ URL์˜ ์ผ๋ถ€๋ถ„' ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ URL์„ ๋ณด๋ฉด ~~~? ์ด๋ ‡๊ฒŒ ๋ฌผ์Œํ‘œ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฒŒ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์ด๋ผ ๋ณด๋ฉด ๋  ๊ฒƒ๊ฐ™๋‹ค.

์˜ˆ๋ฅผ๋“ค๋ฉด ์œ„์—์„œ๋Š” localhost:3000/topic ๋กœ ์ ‘๊ทผํ–ˆ์ง€๋งŒ localhost:3000/topic?id=1 ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐ™์€ ๋ผ์šฐํ„ฐ์—์„œ ๋‹ค๋ฅธ ํ™”๋ฉด์„ ๋ณด์—ฌ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์–˜๊ธฐ๋‹ค. ์ด๊ฒŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ์ฝ”๋“œ๋Š”

1
2
3
app.get('/topic',function(req,res) {
    res.send(req.query.id);
});
cs


์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ์ •๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— req๋ฅผ ์“ฐ๊ณ  request ๊ฐ์ฒด์— ์žˆ๋Š” query๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

http://expressjs.com/en/4x/api.html#req.query ์—ฌ๊ธฐ์— query ๊ฐ์ฒด์— ๊ด€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค.


์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ–ˆ์„ ๋•Œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ํ˜•์‹์œผ๋กœ url์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด localhost:3000/topic?id=9999 ์œผ๋กœ ์ ‘์† ์‹œ์—

์ด์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ์ฐฝ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. id๋ผ๋Š” ๊ฐ’์— 9999 ๋ผ๋Š” ๊ฐ’์„ ์š”์ฒญํ•˜์˜€๊ณ  ๊ทธ๊ฒƒ์„ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด


1
2
3
app.get('/topic',function(req,res) {
    res.send(req.query.id+","+req.query.name);
});
cs

์ด์™€ ๊ฐ™์ด ์“ด๋‹ค๋ฉด id์™€ name์˜ ๊ฐ’์„ ๋‘˜ ๋‹ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ์ƒ์—์„œ์˜ ์ด๋ฆ„๊ณผ url์— ์ž…๋ ฅํ•˜๋Š” ์ด๋ฆ„์ด ๋™์ผํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ ์ด๋Ÿด ๋•Œ๋Š” url์— &์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํ‘œํ˜„์„ ํ•ด์•ผํ•œ๋‹ค. 


์ง€๊ธˆ๊นŒ์ง€ ํ•œ ๊ฒƒ์€ ๊ต‰์žฅํžˆ ๋ถˆํŽธํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…๋“ค์„ ์„ค๋ช…ํ•˜๋Š” ๋‹จ๊ณ„์˜€๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ url์— ์ž…๋ ฅํ•˜๋Š” ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์˜ ํ˜•ํƒœ๋กœ url์„ ๊ฐ€์ง€๊ฒŒ ๋˜์–ด์•ผํ•œ๋‹ค. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
app.get('/topic',function(req,res) {
    var topics = [
        'Javascript is...',
        'Nodejs is...',
        'Express is...'
    ];
    var output = `
        <a href ='/topic?id=0'> Javascript!! </a><br>
        <a href ='/topic?id=1'> Nodejs!! </a><br>
        <a href ='/topic?id=2'> Express!! </a>
        ${topics[req.query.id]}
        `
    res.send(output);
});
cs


์œ„์™€ ๊ฐ™์€ ํ˜•ํƒœ๋Š” ๋งํฌ ํด๋ฆญ ์‹œ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๊ณ  ์‘๋‹ตํ•  ๊ฐ’๋“ค์„ ๋ฏธ๋ฆฌ ๋ฐฐ์—ด์— ๋„ฃ์–ด๋†“๊ณ , ๊ทธ ๊ฐ’์„ output์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ๋„ฃ์–ด์ฃผ๋Š” ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 


์ง์ ‘ url์— ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ์ž…๋ ฅํ•ด์ฃผ๋Š” ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ ๋งํฌ๋กœ ์ด๋™ ์‹œ์— ๊ฐ™์€ ๋ผ์šฐํ„ฐ์—์„œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ๊ฐ’์œผ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฌผ์„ ์ถœ๋ ฅํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค.




-----------------------------------์ถ”๊ฐ€-----------------------------------

semantic URL ๋ฐฉ์‹


๊ธฐ๋ณธ์ ์ธ ์›๋ฆฌ๋Š” ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์ง€๋งŒ ํ˜„๋Œ€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋งŽ์ด ์“ฐ์ด๋Š” URL ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ๋งŒ ๋ด๋„ url์„ ์ด ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•ด์ฃผ๊ณ  ์žˆ๋‹ค.  ex)  http://bubobubo003.tistory.com/20  ์ด์™€๊ฐ™์ด ๋’ค์— 20์ด๋ผ๋Š” path๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์˜ ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (๋ฌผ์Œํ‘œ๊ฐ€ ๋“ฑ์žฅํ•˜์ง€ ์•Š๊ณ  ์ˆซ์žํ˜•์‹์œผ๋กœ)


๊ธฐ์กด์— ์ฝ”๋“œ์—์„œ ์•ฝ๊ฐ„๋งŒ ๋ณ€๊ฒฝ์„ ํ•˜๋ฉด ๋œ๋‹ค.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
app.get('/topic/:id',function(req,res) {
    var topics = [
        'Javascript is...',
        'Nodejs is...',
        'Express is...'
    ];
    var output = `
        <a href ='/topic/0'> Javascript!! </a><br>
        <a href ='/topic/1'> Nodejs!! </a><br>
        <a href ='/topic/2'> Express!! </a>
        ${topics[req.params.id]}
        `
    res.send(output);
});
 
cs


๋‹ฌ๋ผ์ง„๊ฑด ๋ผ์šฐํ„ฐ ๋ถ€๋ถ„์— /:id ๋ผ๊ณ  ์ถ”๊ฐ€๋œ ๋ถ€๋ถ„๊ณผ query๋Œ€์‹  params ๋กœ ๋ฐ”๋€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ a ํƒœ๊ทธ ๋ถ€๋ถ„๋„ /0 /1 /2 ์™€ ๊ฐ™์€ 

๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•œ๋‹ค. (๋ฌผ๋ก  ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ํ•˜๋“œ์ฝ”๋”ฉ์„ ํ•œ ๊ฒƒ์ด๋‹ค.)

๊ธฐ์กด์— localhost:3000/topic?id=0 ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” url์ด ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋Š”์ง€ ํ•œ๋ฒˆ ํ™•์ธํ•ด๋ณด์ž.



URL์„ ๋ณด๋ฉด ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์ด ์•„๋‹ˆ๋ผ ๋ผ์šฐํ„ฐ์˜ ํ˜•ํƒœ๋กœ /0 /1 ์™€ ๊ฐ™์ด ๋“ค์–ด๊ฐ€๋ฉด์„œ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์—ฌ๊ธฐ์„œ ์ž‘์„ฑ๋œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ๋‹ค๋ฅธํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ด์™€๊ฐ™์€ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.



1
2
3
4
app.get('/topic/:id/:mode',function(req,res){
    res.send(req.params.id+','+req.params.mode)
})
 
cs

์ด๋ ‡๊ฒŒ ์ž‘์„ฑ ํ›„ localhost:3000/topic/0/pppp ์˜ url๋กœ ์ ‘์†ํ•˜๊ฒŒ๋˜๋ฉด 


0์ด๋ผ๋Š” ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค. 



์ด์ƒ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ๋ฐ ์‹œ๋ฉ˜ํ‹ฑ url ์˜ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค.



๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
๊ธ€ ๋ณด๊ด€ํ•จ