Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 최대값 최소값
- nodejs http
- BCrypt
- git message
- gradle 설치
- 알고리즘
- templet
- map형태 jsp와 mapper
- it지원
- resultType="hashmap"
- container-fluid
- 자바 로또
- SQL
- #{}
- $(document).on
- $('input [name=
- REST
- 포워드 엔지니어링
- git
- nodejs
- MariaDB
- cmd mariaDB
- interface default
- 자바 예상문제
- bubblesort
- 전역객체
- ${}
- git 명령어
- a href="#" onclick="return false"
- 유효성
Archives
- Today
- Total
Rubberduck-Debugging
nodeJS get, post , 실습 본문
1. 요청 방식 : GET, POST
Get 요청
-URL로 요청 정보 전달, URL만 분석 (?a=111&boardid=10&....)
-길이 제한, 암호화 불리
Post 요청
-메시지 바디(entity)로 요청 정보 전달
-바디 분석 필요
-전송 방식
웹 브라우저의 폼(form) 입력 : GET/POST 요청
<form method=‘post’ action=‘/upload’>
</form>
2. 폼 인코딩 방식
폼 인코딩
-폼 요청 - 요청 바디에 요청 정보 작성
-요청 바디에 메시지 인코딩 방식 : enctype
-- application/x-www-form-urlencoded (default)
-- multipart/form-data (파일 전송)
-- text/plain
3. 폼 데이터 전송 방식
form-urlencoded 방식
이름=값 방식으로 작성. 쿼리 문자열
-메세지 예
form 태그내 name과 value
POST HTTP/1.1
Host: 127.0.0.1:3000
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
key1=value1&key2=value2
-멀티파트 방식의 폼
파일,글자 등 여러 데이터 전송
-멀티파트(multipart) 방식 :
<form method="post" action="upload"
enctype="multipart/form-data">
</form>
-요청 메세지 헤더 컨텐츠 타입 필드
Content-Type: multipart/mixed; boundary=frontier
-------------------------------------------------------------------------------------------------------
POST 요청 (서버에서 처리하기)
1. 요청 데이터 얻기
var body = '';
request.on('data', function(chunk) {
console.log('got %d bytes of data', chunk.length);
body += chunk;
});
request.on('end', function() {
console.log('there will be no more data.');
console.log('end : ' + body);
});
2. 요청 데이터 처리
-전송이 끝나면 : end 이벤트
-end 이벤트 핸들러 함수 : querystring 모듈로 분석
request.on('end', function() {
var parsed = querystring.parse(body);
console.log(‘name1 : ' + parsed.name1);
console.log(‘name2 : ' + parsed.name2);
});
POST 요청 후 새로고침(F5)
Post 요청 후 Refresh
-중복 Post 요청
중복 POST 요청 방지
-POST 요청 처리 후 redirect 응답
-PRG(Post-Redirect-Get) 패턴
-리프레쉬 – Get 요청 중복(OK)
응답 메세지 작성 코드
-Redirection : 클라이언트 주소 옮기기
-상태코드 : 302
-헤더 필드 : Location
-PRG 패턴 적용 코드req.on('end', function() {// POST 요청 메세지 바디 분석/처리res.statusCode = 302;res.setHeader(‘Location’, URL);res.end();});-----------------------------------------------------------------------------실습 환경 구성1.정보 입력 폼2.입력된 정보 확인하기3.요청 분석하기4.요청 처리5.응답 처리하기var http = require('http');var querystring = require('querystring');var movieList = [{ title: '비트곡성', director: '뉴딜' }];var server = http.createServer(function (req, res) {if (req.method.toLowerCase() == 'post') {addNewMovie(req, res);}// get이면 목록 출력else {showList(req, res);}});server.listen(3000);function showList(req, res) {res.writeHeader(200, { 'Content-Type': 'text/html; charset=UTF-8' });res.write('<html>');res.write('<meta charset="UTF-8">');res.write('<body>');res.write('<h3>Favorite Movie</h3>');res.write('<div><ul>');movieList.forEach(function (item) {res.write('<li>' + item.title + '(' + item.director + ')</li>');}, this);res.write('</ul></div>');res.write('<form method="post" action="."><h4>새 영화 입력</h4>' +'<div><input type="text" name="title" placeholder="영화제목"></div>' +'<div><input type="text" name="director" placeholder="감독"></div>' +'<input type="submit" value="upload">' +'</form>');res.write('</body>');res.write('</html>');res.end();}function addNewMovie(req, res) {var body = '';req.on('data', function(chunk) {body += chunk;});req.on('end', function() {var data = querystring.parse(body);var title = data.title;var director = data.director;movieList.push({title:title, director:director});//res.end('Success');res.statusCode = 302;res.setHeader('Location', '.');res.end();});}
--------------------------------------------------------
Node.js POSTMAN 활용하여 실습 해보기 | | |
var http = require('http');var movieList = [{title:'아바타', director:'제임스 카메론'}];http.createServer(function (req, res) {if ( req.method.toLowerCase() == 'post' ) {var buffer = '';req.on('data', function (chunk) {buffer += chunk;});req.on('end', function () {var parsed = JSON.parse(buffer);var titleData = parsed.title;var directorData = parsed.director;movieList.push({title:titleData, director:directorData});res.writeHead(200, {'Content-Type':'application/json'});res.end(JSON.stringify({result:'success'}));});}else {var result = {count : movieList.length,data : movieList};res.writeHead(200, {'Content-Type':'application/json'});res.end(JSON.stringify(result));}}).listen(3000);
'개발자 > 20181127 교육과정' 카테고리의 다른 글
nodeJs routing (0) | 2019.01.09 |
---|---|
nodeJS express (0) | 2019.01.08 |
nodeJS http (0) | 2019.01.07 |
nodeJs npm module (0) | 2019.01.07 |
nodeJS npm (0) | 2019.01.07 |