c o d i n g . . ๐Ÿ‰/Node.js

[์ƒํ™œ์ฝ”๋”ฉ] Node.js ๋ฅผ ์ด์šฉํ•ด ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ(3)

H J 2021. 7. 12. 16:21

์ฟผ๋ฆฌ์ŠคํŠธ๋ง

http://a.com/topic?id=1
protocol / domain / path / query string

์ฟผ๋ฆฌ์ŠคํŠธ๋ง์— ๋”ฐ๋ผ ๊ฐ™์€ path์—์„œ๋„ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค

app.get('/topic', function(req, res){
    let topics = [
        'Javascript is...',
        'Nodejs is...',
        'Express is...'
    ];
    let str = `
    <a href="topic?id=0">JavaScript</a><br>
    <a href="topic?id=1">Nodejs</a><br>
    <a href="topic?id=2">Express</a><br>
    `
    let output = str + topics[req.query.id];
    res.send(output);
});

aํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ๋ฐ”๊ฟ”์ค€๋‹ค

 

๋”๋ณด๊ธฐ
app.get('/topic',function(req, res){
    let topics = [
        'javascript is...',
        'nodejs is...',
        'express is...'
    ];
    let output = `
        <a href="/topic?id=0">JavaScript</a><br>
        <a href="/topic?id=1">Nodejs</a><br>
        <a href="/topic?id=2">Express</a><br>
        ${topics[req.query.id]}
    `
    res.send(output);
})

์ด๋Ÿฐ ์‹์œผ๋กœ๋„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ

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

์ด ์ฝ”๋“œ๋Š” id๋ผ๋Š” property์˜ ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค!

 

 

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

http://localhost:3000/topic?id=2&name=์ด๋ฆ„

์ด๋Ÿฐ ์‹์œผ๋กœ ์—ฌ๋Ÿฌ property๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค

 

 

 

์‹œ๋ฉ˜ํ‹ฑ URL

 

app.get('/topic/:id',function(req, res){
    let topics = [
        'javascript is...',
        'nodejs is...',
        'express is...'
    ];
    let output = `
        <a href="/topic/0">JavaScript</a><br>
        <a href="/topic/1">Nodejs</a><br>
        <a href="/topic/2">Express</a><br>
        ${topics[req.params.id]}
    `
    res.send(output);
})

์‹œ๋ฉ˜ํ‹ฑ URL์ด๋ž€ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜์Œ๋ถ€ํ„ฐ id๋ฅผ ๋ฐ›์„ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ณ  /๋ฅผ ํ†ตํ•ด ๊ตฌ๋ถ„ํ•œ๋‹ค

 

app.get('/topic/:id/:mode', function(req,res){
    res.send(req.params.id+','+req.params.mode);
})

์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค

 

 

 

GET & POST

 

GET ๋ฐฉ์‹: ์–ด๋–ค ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•ด์„œ ๊ฐ€์ ธ์˜ด (URL์— ์ •๋ณด ํฌํ•จ)

 

POST ๋ฐฉ์‹: ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ์ „์†ก

 

 

*get ๋ฐฉ์‹

app.get('/form',function(req, res){
    res.render('form');
})

์ด๋ ‡๊ฒŒ form.pug ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•ด ์ค€ ํ›„

 

doctype html
html 
    head 
        meta(charset='utf-8')
    body
       form(action='form_receiver')
            p
                input(type='text' name='title')
            p
                textarea( name='description')
            p 
                input(type='submit')

form.pug ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์ค€๋‹ค

์—ฌ๊ธฐ์„œ form ํƒœ๊ทธ๋Š” ์ƒˆ๋กœ์šด URL์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ์ข‹๋‹ค

 

action ๋’ค์˜ form_receiver๋ฅผ ์จ์ฃผ๋ฉด http://localhost:3000/form_receiver?title=hello&description=world ์ด๋Ÿฐ ํŽ˜์ด์ง€๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค

 

form.pug์—์„œ text์˜ ์ด๋ฆ„์„ title๋กœ, textarea์˜ ์ด๋ฆ„์„ description์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— http://localhost:3000/form_receiver?title=hello&description=world ์ด๋Ÿฌํ•œ URL์ด ์ƒ์„ฑ๋˜๊ฒŒ ๋œ๋‹ค

 

app.get('/form_receiver', function(req, res){
    let title = req.query.title;
    let description = req.query.description;
    res.send(title+', '+description);
})

/form_receiver์˜ ๋ผ์šฐํ„ฐ๋ฅผ ์ด๋ ‡๊ฒŒ ์จ์ค€๋‹ค

 

 

get ๋ฐฉ์‹: URL์— ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ๋‹ค

 

๋”๋ณด๊ธฐ

์ด๋•Œ form ํƒœ๊ทธ method์˜ ๊ธฐ๋ณธ ์†์„ฑ์œผ๋กœ get์œผ๋กœ ์ง€์ •๋˜์–ด ์žˆ๊ณ  ๋‹ค์‹œ get ๋ฐฉ์‹์œผ๋กœ ์ง€์ •ํ•ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค

doctype html
html 
    head 
        meta(charset='utf-8')
    body
       form(action='form_receiver' method='get')
            p
                input(type='text' name='title')
            p
                textarea( name='description')
            p 
                input(type='submit')

ํ•˜์ง€๋งŒ post ๋ฐฉ์‹์œผ๋กœ ์ง€์ •ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค

(URL์˜ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์€ post ๋ฐฉ์‹์ด ์•„๋‹Œ get ๋ฐฉ์‹์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค)

 

 

*post ๋ฐฉ์‹

app.post('/form_receiver', function(req, res){
    let title = req.body.title;
    let description = req.body.description;
    res.send(title+', '+description);
})

app.get์ด ์•„๋‹Œ app.post๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  query ๋Œ€์‹  body๋ฅผ ์‚ฌ์šฉํ•ด์ค€๋‹ค

 

๊ทธ๋Ÿฌ๋ฉด ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธฐ๊ณ , body parser์„ ์ด์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค

 

๋จผ์ € ์„ค์น˜๋ฅผ ํ•ด์ค€๋‹ค!

 

let bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({extended:false}))

์ด๋Ÿฐ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•œ ํ›„ ์•„๊นŒ ์ผ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ post ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด body ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค!

 

๋”๋ณด๊ธฐ

ํ์Œ...

์ด ๊ฐ•์˜๊ฐ€ ๋ช‡ ๋…„ ์ „ ๊ฐ•์˜๋ผ ๊ทธ๋Ÿฐ์ง€ ๋งŽ์€ ๊ฒƒ๋“ค์ด ๋‹ฌ๋ผ์ง„ ๊ฒƒ ๊ฐ™๋‹ค...ใ…œ

jade -> pug๋„ ๊ทธ๋ ‡๊ณ .. ์ผ๋‹จ ๊ฐ•์˜ ๋‹ค ๋“ฃ๊ณ  ๋”ฐ๋กœ ์•Œ์•„๋ด์•ผ๊ฒ ๋‹ค

์•„๊นŒ get ๋ฐฉ์‹๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ URL์— ๋‹ค๋ฅธ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ์ง€ ์•Š์€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!!

 

GET ๋ฐฉ์‹: ์ •๋ณด์— ๋Œ€ํ•œ ์ฃผ์†Œ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ(์ฟผ๋ฆฌ์ŠคํŠธ๋ง)

POST ๋ฐฉ์‹: ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ URL์— ์ •๋ณด๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ, ์šฉ๋Ÿ‰์ด ํฐ data๋ฅผ ์ „๋‹ฌํ•  ๋•Œ(GET ๋ฐฉ์‹์„ ์ด์šฉํ•˜๋ฉด URL์—์„œ ๋Š๊น€) ์‚ฌ์šฉ

 

๋‚˜๋จธ์ง€๋Š” ๋‹ค์Œ ํŽธ์—์„œ!