반응형
💻 웹 기반 서비스 서버
- 웹 브라우저
- 모바일 웹 브라우저
클라이언트는 서버에 html, css, js, 이미지 등을 요청하여 얻은 데이터를 바탕으로 웹 페이지를 구성함.
📱 모바일 서버
- 네이티브 앱
웹 처럼 html이 아닌 자체적인 코드를 가지고 화면을 구성함.
html, css, js 등이 필요 없다.
xml, json 등의 포멧의 데이터를 필요로 한다.
화면 이동을 클라이언트(앱)에서 담당해서 라우팅이 필요하지 않다.
📃 JSON
1. 특징
- 'property: value' 형식
- 문서 크기가 작아서 네트워크를 이용하여 주고 받기에 편리하다
- property의 이름은 중복될 수 없음
{
'greeting': 'hello',
title: 'name',
price: [4,5,6]
}
2. 요청과 응답
- JSON 생성: JSON.stringfy() 함수를 사용
- JSON 파싱: JSON.parse() 함수를 사용
var http = require('http');
var movieList = [{title:'아바타', director:'제임스 카메론'}];
// 서버 생성
http.createServer((req, res)=>{
// post
if(req.method.toLowerCase()=='post') {
var buffer = '';
// event handling
req.on('data', (chunk)=>{
buffer += chunk;
});
// event handling
req.on('end', ()=>{
var parsed = JSON.parse(buffer);
// post된 data 저장
var title = parsed.title;
var director = parsed.director;
movieList.push({title: title, director: director});
res.writeHead(200, {'Content-Type':'application/json'});
res.end(JSON.stringify({result:'success'}));
});
}
// get
else {
// 서버에 저장된 데이터 반환
var result = {
count: movieList.length,
data: movieList
};
res.writeHead(200, {'Content-Type':'application/json'});
res.end(JSON.stringify(result));
}
}).listen(3000); // port number = 3000 으로 서버를 연다
1) JSON 요청
요청 객체(req)의 body 부분의 JSON을 JSON.parse()를 사용하여 분석한다.
2) JSON 응답
응답 객체(res)의 body 부분에 JSON 데이터를 저장한다. 이를 위해 JSON 데이터를 생성한다.
📃 XML
1. 특징
- 메타 데이터로 문서 구조를 표현하는 markup 언어
html: 웹 브라우저를 위한 언어로 사람을 위한 렌더링 정보를 포함한다.
xml: 기계해석을 위한 언어로 코드로 분석이 가능하다.
<h1>아바타</h1> //html
<title>아바타</title> //xml
- 오피스 앱이나 안드로이드, ios 레이아웃 정의 파일에서 사용
<feed>
<entry>
<title>아바타</title>
<price currency="USD">$1.5</price>
</entry>
<entry>
<title>아바타2</title>
<price currency="USD">$1.7</price>
</entry>
</feed>
2. 요청과 응답
기본적인 방식은 JSON의 요청·응답과 비슷하다.
var http = require('http');
var movieList = [{title:'avartar', director:'james cameron'}];
var libxmljs = require('libxmljs');
var jstoxml = require('jstoxml');
http.createServer((req, res)=>{
if(req.method.toLowerCase()=='post') {
req.on('end', ()=>{
var xmlDoc = libxmljs.parseXmlString(buffer);
var title = xmlDoc.get('/movie/title').text();
var director = xmlDoc.get('/movie/director').text();
movieList.push({title:title, director:director});
res.writeHead(200, {'Content-Type':'application/xml'});
res.end(jstoxml.toXML({result:'success'}));
});
}
else{
res.writeHead(200, {'Content-Type':'application/xml'});
var data = {count:movieList.length, data:movieList};
var result = jstoxml.toXML({result:data});
res.end(result);
}
}).listen(3000);
1) xml 요청
요청 받은 데이터를 파싱해서 분석하는 과정이 필요
- xml 파싱: xml 파싱 모듈이 필요하다
→ libxmljs, xml-stream, xmldoc
- xml 파싱은 여러 종류가 있지만 그중에서 DOM 파싱을 이 글에 작성하였다.
- DOM parser: 부모 자식 관계의 노드들로 구성되어 있는 데이터(ex: feed->entry->title,price)를 이러한 관계를 이용하여 파싱한다.
2) xml 응답
xml 데이터를 생성하는 과정이 필요
- xml 생성: xml 생성 모듈이 필요하다
→ jstoxml
* libxmljs 모듈이 설치가 안되서 실제로 구동하는지 확인을 할 수 없었다...ㅠㅜㅠ
blog.naver.com/PostView.nhn?blogId=brilliantjay&logNo=221790257116&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView
어떤 분이 블로그에 해결 방법 링크들을 모아두신 것 같은데 나중에 한 번 해결해봐야 겠다....
* 본 게시물은 Tacademy 영상을 참고하여 작성되었습니다.
tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=71
반응형
'서버 개발' 카테고리의 다른 글
개발 방법론에 대해 알아보자 (0) | 2021.05.16 |
---|---|
OAuth로 구글 로그인을 구현해보자 (0) | 2021.05.08 |
MongoDB 연결하기 (0) | 2021.04.21 |
Express란 무엇일까? (0) | 2021.04.20 |
Node.js 이해하기 (0) | 2021.04.19 |
댓글