폼 작성 전에 먼저 app.js 소스코드를 살펴보도록 하겠습니다

var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); // 여기가지 모듈을 불러오는 부분입니다.

var routes = require('./routes/index'); var users = require('./routes/users'); // routes의 경로를 변수명으로 지정하고 아래 app.use('/', routes) 부분으로 경로를 넘겨준게 보이네요.

var app = express(); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); // 뷰 엔진으로 ejs를 사용했다고 나옵니다.


app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes);

// url 경로에서 '/' 일 경우 위에서 설정한 경로에 존재하는 routes를 사용하라고 하네요. app.use('/users', users);

// '/users' 일 경우 위에서 지정한 users 경로에 있는 routes로 되어있네요.



이제 view 에서 html 폼(form)을 하나 만들어서 값을 입력하고 서버로 보내보겠습니다.

기존에 있던 index.ejs 안에 body 태그 안에 form 태그를 넣겠습니다.

<body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
    <form action="/name" method="POST">
         <input type="text" name = "user_name">
         <button type="submit">submit</button>
    </form>
</body>

/name 경로로 form 태그 안에 있는 user_name을 POST로 보내도록 했습니다. 


이제 app.js로 가서 소스코드를 추가 하도록 하겠습니다.

var name = require('./routes/name');

-- 생략 --


app.use(bodyParser.urlencoded({extended:true}));

// 중간에 이 부분에서 extended : false로 되어있을텐데 이걸 true로 바꿔주세요.


-- 생략 --

app.use('/name', name);



이제 routes 폴더로 가서 name.js 를 하나 만듭니다.

var express = require('express'); var router = express.Router(); router.post('/', function(req, res){ res.send('Name : ' + req.body.user_name); console.log('Name : ' + req.body.user_name); });  

module.exports = router; 


이제 모든 작성이 끝났습니다. 터미널에서 npm start를 입력하고 브라우저를 열어 localhost:3000으로 갑니다



이제 이름 칸에 이름을 입력하고 submit 해봅니다.


/name 으로 이동했고 입력한 이름이 표시되는 걸 확인할 수 있습니다. 

터미널을 확인하면 아래와 데이터를 받은걸 볼 수 있습니다.

GET / 200 15.020 ms - 334
GET /stylesheets/style.css 304 4.766 ms - -
Name : mike
POST /name 200 24.505 ms - 11


만약 폼 처리 후 특정 경로로 이동하고 싶을 경우 routes/name.js 에서 res.redirect(303, '/경로'); 를 추가하면 됩니다.




반응형

+ Recent posts