1. POST 요청
POST 요청
: GET요청
: URL로 요청정보를 전달, URL만 분석
: 길이제한, 암호화 불리
: POST 요청
: 메시지 바디로 요청 정보 전달
: 바디 분석 필요
: 웹브라우저에서 주소 입력 : GET 요청
: 웹브라우저의 폼 입력 : GET/POST 요청
: 폼 구성요소
: method : post, get
: action : 요청 경로
HTML 폼
: 폼구성요소 : input
: type, name
폼 인코딩
: 폼요청 - 요청바디에 요청 정보 작성
: 요청 바디에 메시지 인코딩방식 : enctype
: application/x-www-form-unlencoded
: 이름=값 방식으로 작성, 쿼리문자열
: key1=value1&key2=value2...
: multipart/form-data
: 파일, 글자등 여러 데이터 전송
: text/plain
: json/xml
2. POST 요청 처리
: 요청 메시지 - request.IncomingMessage
: Readable Stream
: 이벤트 - data, end
: data 이벤트에서 데이터를 차곡차곡 받고
: end 이벤트 함수 호출 시 querystring 모듈로 parse하여 query를 얻는다.
: Post요청 후 Refresh 하면, 중복 Post 요청이됨.
PRG 패턴
: 중복 Post요청 방지
: Post요청 처리 후 redirect 응답 - 주소를 다른곳으로 옮기기
: PRG(Post-Redirect-Get) 패턴
: 리프레쉬 - Get 요청 중복은 괜찮음
: 응답 메세지 작성 코드
: Redirection : 클라이언트 주소 옮기기
3. HTTP 클라이언트
: POST 맨
: BODY, x-www-form-urlencoded
POST 요청 2
1. 멀티파트 요청
POST 요청 메시지
: SNS서비스 중 접하는 Post 요청
: 사진올리기
: 글과 사진 올리기
: 메시지 바디 기록 방식
: multipart/form-data
멀티파트 메시지 구성
: content-type 헤더 항목의 boundary로 정의
: Content-Type:multipart/form-data; boundary = XXXYYYZZZ
: 메시지 바디 내 파트 구성
: 파트 구분자(--XXXYYYZZZ) // 마무리 때에는 --XXXYYYZZZ--
: 파트 인코딩
: 파트 내 정보
HTML 폼
: 폼 enctype : multipart/form-data
: input 타입 : file
2. 멀티 파트 요청 분석
: 멀티 파트 요청 분석
: 메시지 요청 헤더
: Content-Type:multipart/form-data; boundary = XXXYYYZZZ
: 위 정보 확인
: 메시지 바디 분석
: 각 파트 구분
: 파트별 구분
: 분석하는게 복잡하고 여려워서 모듈을 사용한다.
멀티파트 분석 모듈
: formidable
: 요청 분석 클래스, 파일 받는 클래스
: 이벤트 - field, file, aborted, end // 프로퍼티 - upleadDir, keepExtension, multiples
: multer
업로드된 파일
: 업로드 설정 폴더로 저장
: 파일 이름 변경
3. 파일 업로드 서비스
: 파일 업로드 - 임시폴더
: 파일 업로드 후
: 파일을 임시 폴더 -> 리소스 저장소로 이동
: 이름이 충돌되지 않도록 이름 변경
: 날짜, 일련번호, 사용자 계정...