form: 입력된 데이터를 한 번에 서버로 전송하기 위해 사용
즉, 클라이언트가 서버에게 정보를 전달할 때 사용된다.
form의 메소드
? 뒤의 주소들을 query라고 한다.form get 정보 받기


결과 화면 세팅 해 준 뒤, 명령pormpt창에 node run '설정해준 이름' 을 치면 서버가 실행된다. 이름을 설정 안해 줬으면 node app.js(서버 파일 이름)을 치면 된다.
결과화면에서 form이 제출 되었을 때 나타나는 화면을 설정 해주기 위해 설정 해준다.

form post 정보 받기
get과 마찬가지로 post의 요청과
결과 화면 만들어준다.
여기서 input 속성으로 적은 title의 값은 결과화면에서 ID text란에 커서를 가져다 놓으면 나오는 값이다.

이어서 제출 버튼을 눌러서 form을 전송하게 되면 화면은 넘어가지만 정보창에는 undefinded가 나온다.
이유는 get은 query로, post는 body로 정보를 전달하게 되므로 body-parser 설정을 안해주었기 때문이다.
body-parser은 body를 해석해주는 설정으로 urlencoded에서 해석을 진행해준다.
post요청에서 form을 전송하고 데이터 값을 보면 checkbox의 데이터들이 on으로만 나타나진다. 이건 input의 type에서 value값을 주면 된다.
value 값으로 marketing, private, use를 준 결과값이다.
result.ejs 파일로 결과화면 도출
form 제출 시 result.ejs 파일을 만들어서 새로운 결과 페이지를 연결하려고 한다.
get, post 요청에서 응답하는 방식에는res.send가있고 res.render가 있다.
res.send는 간단한 텍스트나, 문자열, 파일등을 데이터 그대로 전송할 때 사용한다.res.render는 뷰 템플릿을 사용하여 HTML을 동적으로 생성하고 이를 클라이언트에게 전달할 때 사용한다.
그래서 그냥 텍스트만 전달 했던 send 부분은 주석처리를 하고 render를 이용해서 result파일을 연결 해주었다.get 요청으로 전송된 결과 화면에서는

이런식으로 코드를 주어 결과 화면에는 text 그대로 결과 화면이 나온다.
이 text들을 파일에 사용한 정보들로 바꿔 줄 것이다.
일단 res.render의 두 번째 인자로 result 파일에 들어갈 정보를 객체로 보내준다.

두 번째 인자로 적어준 title을 result 파일에서<%=%>를 사용해서 적용 시켜준다.
id 와 email, pw는 query에 담겨있기 때문에 userInfo로 담아주고 result 파일에서 userInfo.(정보)로 적용 시켜준다.

사용된 정보(title: GET, query에 담겨있고, 사용자가 입력하는 id, email, pw) 들로 이뤄진 result 화면을 볼 수 있다.
get요청과 같이 res.send를 주석처리해주고 res.render를 이용해서 title과 userInfo들을 입력하려한다. 이때 post는 body에 정보를 전달해주므로 res.body를 사용해준다.
결과는 GET요청과 동일하게 들어왔지만 post에는 email정보를 주지 않았기 때문에 공백란으로 남는것을 볼 수있다.
form validation (유효성 검사)
@ 무조건 포함/ : 정규식을 사용한다는 의미^ : 시작, $ : 끝, [ ] : 범위[a-z]: a부터 z까지 중 문자 하나, [가-힣]: 한글의 모든 음절 범위{ } : 개수{2, 4}: 2개 부터 4개 까지( ) : 그룹 검색 및 분류. : 임의의 글자 하나+ : 1개 이상의 글자* : 0개 이상의 모든 문자? : 0~1번 반복되는 문자열
위에서 작성한 form에 title에 맞게 pattern으로 작성해 주었다.
결과 화면에서 정규식에 맞지 않게 입력하면 위와 같이 정보창이 뜬다.
유효성 검사 응용
사용할 기본 코드 작성
1. input창이 빈 값일 때 제출이 안되도록
form에 name값을 적어도 되고 form에 id값을 적어도 같은 form을 불러 올 수 있다.만약 form안에 id2라는 name을 가진 input창의 value값이 공백으로만 이루어져 있다면 다음 함수를 실행 해 주세요라는 코드이다.
return에 false를 해야만 submit 이벤트를 막을 수 있다.2. chekbox에 하나라도 선택이 되어 있어야만 제출 되도록
만약 form의 첫번째 mail과 두번째 mail에 checked가 false이면, 제출이 되지 않는다.라는 코드이다.
checkbox는 기본 default 값으로 checked 옵션이 false가 되어있어서 체크가 안되어있다.배열의 형태로 값이 나타나진다.return에 false를 해야만 submit 이벤트를 막을 수 있다.form validation을 post로 요청해 주는 API 작성
결과는 data로 확인하기위해 send를 주었다.
nodemon
파일들을 모니터링 하다가 소스코드 변경시 자동으로 node 재실행을 해주는 패키지
ctrl+c 단축키로 node 명령어를 종료 했다가 다시 입력을 해주어야 함.npm install -g nodemon을 해주면 전역 설치를 해주고, 설치 후 nodemon -v를 해주면 설치 확인(버전 확인)을 해줄 수 있다.npm installnpm install -g"test" 아래에 "watch": "node (파일명)를 적어서 실행 명령어를 입력해준다.''를 사용하면 안되고 큰따음표""를 사용해야한다.npm run watch를 적어주면 실행된다.API
Application Programming Interface
프론트엔드에서 백엔드로 데이터를 요청하면 (request)
백엔드에서 프론트엔드로 응답(response)
GET, POST, PUT, DELETE method같은 자원들을 보낼 수 있다.jason이라는 format의 데이터라던지, XML이라 format의 데이터를 보냄으로 응답을 할 수 있다.resource + method로 표현, 특정한 형태로 전달하는 방식.resource와 어떠한 method로 통신 할 것인지를 적어주면 된다.resource: 내가 필요한 데이터, 모든 데이터들은 특정 장소에 보관되어 있음.method 뒤에는 주소를 적어주어야 하는데 그 주소가 URI이다. 이렇게 주소와 URI가 명시되어있는 방식으로 통신하는 방식이 REST API이다.GET : 읽기, 검색 : 내용 또는 정보를 가지고만 오는 방식. (뉴스 기사..)POST : 입력, 등록 : 로그인, 댓글 등록, 게시판 등록 등,,PUT: 모두 수정PATCH : 일부 수정DELETE : 삭제