기본적인 Browser 동작원리와
HTTP Method부터 RestFul API 설계까지 간단하게 알아보자
HyperText Transfer Protocol
HTTP
프로토콜
•
•
•
GET
POST
PUT
DELETE
PATCH
Accept
text/html,application/xhtml+xml,application/xml;q=0.9,imag
e/webp,image/apng,*/*;q=0.8
클라이언트가 이해 가능한 컨텐츠 타입
Accept-
Encoding
gzip, deflate, br 클라이언트가 이해 가능한 컨텐츠 인코딩
Connection Keep-alive
현재의 접속이 완료 된 후 접속을 유지할
지
Cookie _ga=GA1.2.173474807.1519956837
서버를 통해 인터넷 사용자의 컴퓨터에 설
정되는 작은 기록 파일
Host Imustdo.work
서버의 도메인명과 서버가 리스닝하는
TCP포트 정보
User-Agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/60.0.3112.113 Whale/1.0.39.16 Safari/537.36
사용자 에이전트의 응용 프로그램 유형,
운영 체제, 소프트웨어 공급 업체, 소프트
웨어 버전을 식별 하게 해주는 문자열을
포함
Connection Keep-alive
현재의 접속이 완료 된 후 접속을 유지할
지
Content-
Encoding
gzip 컨텐츠 인코딩 방법
Content-Type text/html; charset=utf-8 컨텐츠 타입과 문자셋
Content-Length 3821 컨텐츠 크기
Date Sat, 07 Apr 2018 06:16:10 GMT 응답 받은 시간
Server ngnix/1.12.1 (Ubuntu) 웹 서버 정보와 운영체제 정보
Chrome, Oprea, Whale, Vivaldi, Edge..
브라우저
동작원리
브라우저야
google.co.kr에 접속해줘!
google.co.kr에 접속 하였을 때
네 사용자님.
@DNS야 google.co.kr의
IP를 알려줘!
Domain Name System
호스트의 도메인 이름을 호스트
네트워크 주소로 바꾸거나 그 반대의
변환을 수행 할 수 있도록 하기 위해
개발됨
IP Address
Domain Address
168.126.63.1
KT Kornet
CloudFlare
google.co.kr의 IP주소는
172.217.31.131 이야.
google.co.kr에 접속 하였을 때
172.217.31.131 로
접속해서
html 파일을 가져와
RestFul API?
RestFul
API
RepresentationsVerb
REST 구성
Resource
자원을 정의함 자원에 대한 행위를 정의 자원에 대한 행위의 내용을 정의
CREATE
READ
UPDATE
DELETE
HTTP Method는 POST를 사용하며
생성한다는
의미를 가지고 있음
HTTP Method는 GET을 사용하며
조회한다는
의미를 가지고 있음
HTTP Method는 PUT을 사용하며
업데이트한다는 의미를 가지고 있음
HTTP Method는 DELETE를 사용하며
삭제한다는 의미를 가지고 있음
REST의 기본
모든 회원 정보 조회 HTTP GET http://localhost/users
특정 회원 정보 조회 HTTP GET http://localhost/users/admin
회원 정보 검색 HTTP GET http://localhost/users?find=admin
회원 등록 HTTP POST
http://localhost/users
{
“name”: “Administrator"
}
회원 삭제 HTTP DELETE http://localhost/users/admin
해당 회원 정보 변경 HTTP PUT
http://localhost/users/admin
{
“name”: “Guest”,
“age”: “30”
}
•
•
•
•
•
•
•
•
•
Client Server
사용자 인증, Context(세션, 로그인정보) 직접 관리 API 제공, 비즈니스 로직 처리 및 저장
사용자 인증 암호화 로드 밸런스
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Server Architecture
Server
Architecture
차세대 웹서버
"더 적은 자원으로 더 빠르게 데이터를 서비스 할 수
있다”
가장 많이 사용되고 있는 웹 서버
주로 PHP를 호스팅할 때 사용됨
Apache Tomcat 보다 빠른 속도
구글의 크롬 V8 자바스크립트 엔진을 기반으로 한 고성능 네트워크 서버
비동기 I/O 처리를 하는 서버 미들웨어
하나의 쓰레드로 여러 요청을 처리하기 때문에 많은 Connection에
대해서 Node.js 성능이 압도적으로 높다.
웹의, 웹에 의한, 웹만을 위한 프로그래밍 언어
웹 개발에 특화된 언어
C언어 기반으로 C언어에 익숙한 개발자들이 쉽게 접근
가능
Microsoft사에서 개발한 서버사이드 언어
윈도우 환경이 편한 개발자에게 쉽게 접근 가능
윈도우 계열 운영체제에서만 사용가능
자바 기반 서버사이드 언어
대기업이나 공기업에서 많이 사용함으로써 연봉이 높음
생산성이 타 언어에 비해 많이 떨어짐
JVM만 설치되어 있다면 어느 곳에서도 사용 가능
RDBMS (관계형 데이터베이스)
오픈 소스이다보니 유료 데이터베이스인 Oracle DB에 성능은 떨어짐
RDBMS (관계형 데이터베이스)
유료 데이터베이스이며 고성능 트랜젝션 처리에 유리
성능 측면에서 MySQL보다 한수위
RDBMS (관계형 데이터베이스)
Microsoft사에서 개발한 데이터베이스로써 윈도우 플랫폼에 독립적임
NoSQL 데이터베이스
스키마 설계가 필요가 없음
낮은 진입장벽
Key-Value 메모리 캐시 서버
코어 수가 4개를 넘어가면 성능 저하 이슈 발생
메모리 기반의 데이터 저장소
Key-value 뿐만이 아닌 문자열, 리스트, Set, Sorted, set,
Hash 등 여러 데이터 형식을 지원
Phone
E-mail
KakaoTalk
Facebook
Blog
Q & A
Question & Answer

한국청소년정보과학회 1회 세미나 - RestFul API Basic