SlideShare a Scribd company logo
1 of 29
Download to read offline
기본적인 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

More Related Content

What's hot

프로젝트용 PC 환경구성 이찬희
프로젝트용 PC 환경구성   이찬희프로젝트용 PC 환경구성   이찬희
프로젝트용 PC 환경구성 이찬희찬희 이
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Circulus
 
HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법
HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법
HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법Young D
 
가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계Herren
 
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)옥시즌
 
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)옥시즌
 
01 큐브리드 이해
01 큐브리드 이해01 큐브리드 이해
01 큐브리드 이해Jong Gook Bae
 
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurationsJohn Kim
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징trustinlee
 
[PHPFest 2013] PHP 성능 향상 방법
[PHPFest 2013] PHP 성능 향상 방법[PHPFest 2013] PHP 성능 향상 방법
[PHPFest 2013] PHP 성능 향상 방법phpkorea
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)jeongseokoh
 
시그니처 기반 IT 인프라 자산수집 솔루션
시그니처 기반 IT 인프라 자산수집 솔루션시그니처 기반 IT 인프라 자산수집 솔루션
시그니처 기반 IT 인프라 자산수집 솔루션옥시즌
 
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)옥시즌
 
HTTP 완벽가이드 4장 커넥션관리
HTTP 완벽가이드 4장 커넥션관리HTTP 완벽가이드 4장 커넥션관리
HTTP 완벽가이드 4장 커넥션관리박 민규
 
[Network] Data Transfer History
[Network] Data Transfer History[Network] Data Transfer History
[Network] Data Transfer Historyssuserb2b4e71
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee dockerDK Lee
 
PHP를 위한 NginX(엔진엑스) 시작과 설정
PHP를 위한 NginX(엔진엑스) 시작과 설정PHP를 위한 NginX(엔진엑스) 시작과 설정
PHP를 위한 NginX(엔진엑스) 시작과 설정Jin wook
 
[오픈소스컨설팅]Session Clustering
[오픈소스컨설팅]Session Clustering[오픈소스컨설팅]Session Clustering
[오픈소스컨설팅]Session ClusteringJi-Woong Choi
 
Web Socket
Web SocketWeb Socket
Web Socketymtech
 
Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상knight1128
 

What's hot (20)

프로젝트용 PC 환경구성 이찬희
프로젝트용 PC 환경구성   이찬희프로젝트용 PC 환경구성   이찬희
프로젝트용 PC 환경구성 이찬희
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법
HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법
HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법
 
가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계
 
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
 
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
파일전송 및 공유 전문 솔루션 - CrushFTP (SFTP 서버) (old version)
 
01 큐브리드 이해
01 큐브리드 이해01 큐브리드 이해
01 큐브리드 이해
 
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
 
[PHPFest 2013] PHP 성능 향상 방법
[PHPFest 2013] PHP 성능 향상 방법[PHPFest 2013] PHP 성능 향상 방법
[PHPFest 2013] PHP 성능 향상 방법
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
시그니처 기반 IT 인프라 자산수집 솔루션
시그니처 기반 IT 인프라 자산수집 솔루션시그니처 기반 IT 인프라 자산수집 솔루션
시그니처 기반 IT 인프라 자산수집 솔루션
 
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
파일 전송 SFTP 서버 솔루션 - CrushFTP (old version)
 
HTTP 완벽가이드 4장 커넥션관리
HTTP 완벽가이드 4장 커넥션관리HTTP 완벽가이드 4장 커넥션관리
HTTP 완벽가이드 4장 커넥션관리
 
[Network] Data Transfer History
[Network] Data Transfer History[Network] Data Transfer History
[Network] Data Transfer History
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee docker
 
PHP를 위한 NginX(엔진엑스) 시작과 설정
PHP를 위한 NginX(엔진엑스) 시작과 설정PHP를 위한 NginX(엔진엑스) 시작과 설정
PHP를 위한 NginX(엔진엑스) 시작과 설정
 
[오픈소스컨설팅]Session Clustering
[오픈소스컨설팅]Session Clustering[오픈소스컨설팅]Session Clustering
[오픈소스컨설팅]Session Clustering
 
Web Socket
Web SocketWeb Socket
Web Socket
 
Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상
 

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

[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTPNAVER D2
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요dgmit2009
 
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)AWSKRUG - AWS한국사용자모임
 
Web App Security 2015.10
Web App Security 2015.10Web App Security 2015.10
Web App Security 2015.10Chanjin Park
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js연웅 조
 
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초JinuNoh
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How ToJi-Woong Choi
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기SangJin Kang
 
[동그라미재단] 2014ㄱ찾기_에어_PHP란
[동그라미재단] 2014ㄱ찾기_에어_PHP란[동그라미재단] 2014ㄱ찾기_에어_PHP란
[동그라미재단] 2014ㄱ찾기_에어_PHP란thecirclefoundation
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석Tommy Lee
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개Hyogi Jung
 
Web hacking introduction
Web hacking introductionWeb hacking introduction
Web hacking introductionJinkyoung Kim
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 SeongHyun Ahn
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림우림 류
 
Play node conference
Play node conferencePlay node conference
Play node conferenceJohn Kim
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Han Sung Kim
 

Similar to 한국청소년정보과학회 1회 세미나 - RestFul API Basic (20)

[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
LTM
LTMLTM
LTM
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
 
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
DynamoDB를 이용한 PHP와 Django간 세션 공유 - 강대성 (피플펀드컴퍼니)
 
Web App Security 2015.10
Web App Security 2015.10Web App Security 2015.10
Web App Security 2015.10
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
 
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
 
[동그라미재단] 2014ㄱ찾기_에어_PHP란
[동그라미재단] 2014ㄱ찾기_에어_PHP란[동그라미재단] 2014ㄱ찾기_에어_PHP란
[동그라미재단] 2014ㄱ찾기_에어_PHP란
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개
 
Web hacking introduction
Web hacking introductionWeb hacking introduction
Web hacking introduction
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
Play node conference
Play node conferencePlay node conference
Play node conference
 
3장
3장3장
3장
 
Servlet3
Servlet3Servlet3
Servlet3
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
 

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