포스코x코딩온 웹 풀스택 양성과정

[포스코x코딩온] 웹 풀스택 과정 5주차 회고 | Form 전송

Codult 2024. 3. 29. 21:18
728x90

※ 정보를 요청하는 쪽이 '클라이언트', 정보를 제공하는 쪽이 '서버'

form 전송

📌 form

form 이란, 클라이언트가 서버에 (사용자가 입력한) 데이터를 전송하는 방법으로, 속성 action, method 으로 각각 "데이터를 전송할 서버의 url"과 "전송하는 방식"을 지정할 수 있다.

form 태그 내에 입력받고자 하는 input 태그를 위치시킨다.

🚩 form 속성

  • action: 사용자가 입력한 데이터를 전송할 서버의 url을 지정한다.
  • method: 사용자가 입력한 데이터를 전송하는 방법을 지정한다. 전송 방법은 get, post가 있다.
<form action = "/getForm" method = "get">
  // /getForm 경로로 get 방식으로 데이터를 전송한다.
	<input type = "text">
</form>
  • name: 폼을 식별하기 위한 이름
  • target: action 속성값에 지정한 스크립트 파일을 다른 위치에서 열 수 있도록 한다. (_blank, _self)

🚩 get

  • url에 파라미터 형태로 정보가 담겨 전송된다.
  • url로 정보가 확인되기 때문에, password 같은 개인정보는 get방식으로 전송하면 안된다!

🚩 post

  • url 상에서 정보가 표시되지 않는다.
  • body에 담겨서 전송된다. (→ body-parser 미들웨어를 통해 body 받을 수 있음)

📌 form 정보 받기

  • get 요청받은 경우, req.query 으로 전달받은 query string을 가져온다.
app.get("/getForm", (req, res) => { ///getForm 경로로 get 요청을 받았을 때
  	console.log(req.query);
})
  • post 요청받은 경우,
    (i) 전송된 body 값을 받아올 수 있는 미들웨어(body-parser)을 설정해준다.
    (ii) req.body로 전달받은 body를 가져온다.
// body-parser
app.use(express.urlencoded({ extended: true }));
app.use(express.json());

// req.body
app.post("/postForm", (req, res) => { //postForm 경로로 post 요청을 받았을 때
	console.log(req.body);
})
  • 객체로 저장하여 결과 페이지에 데이터를 추가할 수 있다.

node.js에서 정보를 전달받아, 객체로 저장하여 결과 페이지에 뜨도록 하는 전체 과정을 하나하나씩 정리하면서 보면 다음과 같다. (가독성을 위해 캡쳐함)


: express로 서버를 구축하기 위해 express() 호출하고, PORT 설정을 한다.


: body-parser(미들웨어)를 설정하고, ejs 사용을 위해 view engine을 설정한다.


: (i) /경로로 요청을 받았을 때, ./views의 index.ejs와 데이터(title: "폼 실습")를 렌더링한다.

 

※ userInfo: req.query 또는 userInfo: req.body와 같이 객체로 저장되어, 원하는 데이터를 userInfo.id, userInfo.pw 같은 형태로 뽑아 쓸 수 있다. (input 태그에서 설정해둔 name이 key 값으로 들어간다.)

 

  (ii) /getForm 경로로 get 요청을 받았을 때, 전달받은 정보(req.query)를 콘솔창에 띄운다. (제대로 정보 전달받았는지 확인하기 위해, 이 과정 필요!) & result.ejs와 데이터를 렌더링한다.

 

  (iii) /postForm 경로로 post 요청을 받았을 때, 전달받은 정보(req.body)를 콘솔창에 띄운다. & result.ejs와 데이터를 렌더링한다.

 
728x90