SlideShare a Scribd company logo
REST
김영남
REST의 3요소
 메서드
 무엇을 할 것인가?
 리소스
 행위의 대상
 리소스 지향 아키텍처 스타일답게 모든것을 리소스(명사)로 표현함(REST형태의 디자인)
 Push 메시지를 보낸다 → /myweb/sendpush(X)
 Push 메시지 요청을 생성한다 → POST/myweb/push(O)
 메시지
 행위의 내용
메서드 의미
POST Create
GET Select
PUT Update
DELETE Delete
REST의 특성
 유니폼 인터페이스(Uniform Interface)
 HTTP 표준만 따르면 어떠한 기술(언어)이든지 사용가능
 무상태성(Stateless)
 Client의 context를 서버쪽에 유지하지 않음
 API서버는 들어오는 요청만 메시지로 처리하면 됨
 캐시 가능(Cacheable)
Client REST Component
GET/partners/UK
304 Not Modified(No content)
REST의 특성
 자체표현구조(Self-descriptiveness)
 API메시지만 보고도 이해 할 수 있는 자체 표현 구조
 클라이언트 서버 구조(Client-Server)
 클라이언트와 서버간 개발 의존성이 줄어듦
 계층형 구조(Layered System)
Client Server
사용자 인증, Context(세션, 로그인정보) 직접 관리 API제공, 비즈니스 로직 처리 및 저장
Client
Server Side
API Call
사용자 인증 암호화 로드 밸런스 …
Server Server Server Server
Server
Server
REST 안티 패턴
 GET/POST를 이용한 터널링
 HTTP응답 코드를 사용하지 않음
 성공은 200, 실패는 500과 같이 1~2개의 HTTP응답 코드만 사용하는 경우
터널링 잘못된 내용
HTTP GET, http://myweb/users?method=update&id=terry
실제 동작은 리소스를 업데이트 하는 내용인데
HTTP PUT을 사용하지 않고 GET에 쿼리 파라미터로
method=update를 사용함
HTTP POST, http://myweb/users/
{
“getuser”:{
“id”:”terry”,
}
}
Insert가 아닌데도 POST메소드를 통해 JSON바디에
operation명을 넘기는 형태
REST의 문제점
 JSON + HTTP를 쓰면 REST인가?
 리소스를 제대로 정의하고 이에 대한 CRUD를 HTTP 메서드인
POST/PUT/GET/DELETE에 맞춰 사용해야 함
 표준 규약이 없다
 표준이 없어 관리가 어렵다(메시지 구조에 대한 정의 및 규약이 없다)
 사용할 REST에 대한 자체 표준을 정해야 함
 프로젝트 별 REST API표준 가이드 및 API Spec문서를 만들어야 함
 전통적인 RDBMS에 적용하기 쉽지 않다
 Primary key가 단일key가 아닐경우 URI표현이 매우 부자연스러워짐
 대체key사용 → 전체 DB구조 변경해야함
REST API 보안
 인증(Authentication)
 API키 방식
 Client는 API키를 발급받고 API를 호출할때 API키를 메시지에 넣어서 호출
 모든 클라이언트가 API키를 공유하기 때문에 한번 API키가 노출되면 전체 API가 뚫림
 API토큰 방식
 ID/비밀번호 등으로 사용자 인증 후 사용제한 기간이 있는 API토큰을 발급
 API토큰을 탈취당하면 API call은 가능하지만 사용자의 ID/비밀번호는 탈취 당하지 않음
 HTTP Basic Auth, Digest Access Authentication, OAuth 2.0등
 JWT(Json Web Token)방식
 사용자에 대한 추가정보를 토큰에 저장함
 사용자의 접근 권한을 추가적으로 확인할 필요가 없음
{
“id”:”terry”
, “role”:[“admin”,”user”]
, “company”:”pepsi”
}
REST API 보안
 권한 인가(Authorization)
 API인가 방식
 사용자의 역할 기반(Admin, User, …)
 사용자에게 API별 직접 권한 부여
 API권한 인가 처리 위치
 네트워크(전송) 레벨 암호화
 HTTPS보안 프로토콜 : 가장 기본적이고 필수적인 REST API 보안방법
 추가적으로 공인인증서 사용에 대해 검토 해야 함
 메시지 본문 암호화
 메시지 무결성 보장
 HMAC등
위치 특징
클라이언트 클라이언트를 신뢰 할 수 있을 경우에만 사용 가능
게이트웨이 사용자 권한 인증에 필요한 데이터가 있을 수 있기 때문에 사용하기 어려움
서버 일반적이고 보편적인 방법, 비즈니스 로직에 구현

More Related Content

What's hot

REST API 디자인 개요
REST API 디자인 개요REST API 디자인 개요
REST API 디자인 개요
nexusz99
 
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
dgmit2009
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
Terry Cho
 
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Manjong Han
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
Terry Cho
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계
Jinho Yoo
 
REST Ovewview
REST OvewviewREST Ovewview
REST Ovewview
Terry Cho
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
Wonchang Song
 
SOAP REST 이해
SOAP REST 이해SOAP REST 이해
SOAP REST 이해
Jake Yoon
 
E-Gov 기반 Mobile Web Friendly 개발
E-Gov 기반 Mobile Web Friendly 개발E-Gov 기반 Mobile Web Friendly 개발
E-Gov 기반 Mobile Web Friendly 개발
JavaCommunity.Org
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
Terry Cho
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
Channy Yun
 
Json view 예제 설명
Json view 예제 설명Json view 예제 설명
Json view 예제 설명
Hyung Eun Jin
 
Web http spec(basic)
Web http spec(basic)Web http spec(basic)
Web http spec(basic)
Julia Park
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1
Minchul Jung
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
Terry Cho
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
Sungchul Park
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드
Terry Cho
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
Terry Cho
 

What's hot (20)

REST API 디자인 개요
REST API 디자인 개요REST API 디자인 개요
REST API 디자인 개요
 
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
 
RESTful Mashup
RESTful MashupRESTful Mashup
RESTful Mashup
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계
 
REST Ovewview
REST OvewviewREST Ovewview
REST Ovewview
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
 
SOAP REST 이해
SOAP REST 이해SOAP REST 이해
SOAP REST 이해
 
E-Gov 기반 Mobile Web Friendly 개발
E-Gov 기반 Mobile Web Friendly 개발E-Gov 기반 Mobile Web Friendly 개발
E-Gov 기반 Mobile Web Friendly 개발
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
 
Json view 예제 설명
Json view 예제 설명Json view 예제 설명
Json view 예제 설명
 
Web http spec(basic)
Web http spec(basic)Web http spec(basic)
Web http spec(basic)
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
 

Viewers also liked

Http 헤더
Http 헤더Http 헤더
Http 헤더
kidoki
 
HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수
Yeon Soo Kim
 
현실적 Angular js
현실적 Angular js현실적 Angular js
현실적 Angular js
Jae Sung Park
 
Chap8 - HTTP 완벽가이드 8장
Chap8 - HTTP 완벽가이드 8장Chap8 - HTTP 완벽가이드 8장
Chap8 - HTTP 완벽가이드 8장
LJH11
 
Http
HttpHttp
Cool twitterconference taphunter
Cool twitterconference taphunterCool twitterconference taphunter
Cool twitterconference taphuntergWave Consulting
 
XCEED for Venues: Nightgraph + Venuegraph
XCEED for Venues: Nightgraph + VenuegraphXCEED for Venues: Nightgraph + Venuegraph
XCEED for Venues: Nightgraph + Venuegraph
Xceed
 
Asia-Pacific | Business Wire
Asia-Pacific | Business WireAsia-Pacific | Business Wire
Asia-Pacific | Business Wire
maliciousswindl33
 
Seminario ortografia 2011
Seminario ortografia 2011Seminario ortografia 2011
Seminario ortografia 2011Josmiliteratura
 
curso-de-fotografia-digital by Thewebfoto
curso-de-fotografia-digital by Thewebfoto curso-de-fotografia-digital by Thewebfoto
curso-de-fotografia-digital by Thewebfoto
chikuy
 
Destiny Development Profile July 2011
Destiny Development Profile July 2011Destiny Development Profile July 2011
Destiny Development Profile July 2011
fanzhibo
 
Product Media Magazine: January - February 2016
Product Media Magazine: January - February 2016Product Media Magazine: January - February 2016
Product Media Magazine: January - February 2016
The BPMA
 
Spohrer darwin woi 20151119 v2
Spohrer darwin woi 20151119 v2Spohrer darwin woi 20151119 v2
Spohrer darwin woi 20151119 v2
ISSIP
 
Airiti books user_guide
Airiti books user_guideAiriti books user_guide
Airiti books user_guide
airitiBooks
 
Microsoft opensource
Microsoft opensourceMicrosoft opensource
Microsoft opensource
CDS
 
Avocats Garrigues | Presentation 2013
Avocats Garrigues | Presentation 2013Avocats Garrigues | Presentation 2013
Avocats Garrigues | Presentation 2013
Garrigues abogados
 
Civilizacao Solar
Civilizacao Solar Civilizacao Solar
Civilizacao Solar guestd2646d
 
Airitibooks user guide201512
Airitibooks user guide201512Airitibooks user guide201512
Airitibooks user guide201512
jack_airiti
 

Viewers also liked (20)

Web http spec
Web http specWeb http spec
Web http spec
 
Http 헤더
Http 헤더Http 헤더
Http 헤더
 
HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수
 
현실적 Angular js
현실적 Angular js현실적 Angular js
현실적 Angular js
 
Chap8 - HTTP 완벽가이드 8장
Chap8 - HTTP 완벽가이드 8장Chap8 - HTTP 완벽가이드 8장
Chap8 - HTTP 완벽가이드 8장
 
Http
HttpHttp
Http
 
Cool twitterconference taphunter
Cool twitterconference taphunterCool twitterconference taphunter
Cool twitterconference taphunter
 
XCEED for Venues: Nightgraph + Venuegraph
XCEED for Venues: Nightgraph + VenuegraphXCEED for Venues: Nightgraph + Venuegraph
XCEED for Venues: Nightgraph + Venuegraph
 
Asia-Pacific | Business Wire
Asia-Pacific | Business WireAsia-Pacific | Business Wire
Asia-Pacific | Business Wire
 
Seminario ortografia 2011
Seminario ortografia 2011Seminario ortografia 2011
Seminario ortografia 2011
 
curso-de-fotografia-digital by Thewebfoto
curso-de-fotografia-digital by Thewebfoto curso-de-fotografia-digital by Thewebfoto
curso-de-fotografia-digital by Thewebfoto
 
Blog uffici-arredati
Blog uffici-arredatiBlog uffici-arredati
Blog uffici-arredati
 
Destiny Development Profile July 2011
Destiny Development Profile July 2011Destiny Development Profile July 2011
Destiny Development Profile July 2011
 
Product Media Magazine: January - February 2016
Product Media Magazine: January - February 2016Product Media Magazine: January - February 2016
Product Media Magazine: January - February 2016
 
Spohrer darwin woi 20151119 v2
Spohrer darwin woi 20151119 v2Spohrer darwin woi 20151119 v2
Spohrer darwin woi 20151119 v2
 
Airiti books user_guide
Airiti books user_guideAiriti books user_guide
Airiti books user_guide
 
Microsoft opensource
Microsoft opensourceMicrosoft opensource
Microsoft opensource
 
Avocats Garrigues | Presentation 2013
Avocats Garrigues | Presentation 2013Avocats Garrigues | Presentation 2013
Avocats Garrigues | Presentation 2013
 
Civilizacao Solar
Civilizacao Solar Civilizacao Solar
Civilizacao Solar
 
Airitibooks user guide201512
Airitibooks user guide201512Airitibooks user guide201512
Airitibooks user guide201512
 

Similar to REST

WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술
Changhwan Yi
 
REST Concept
REST ConceptREST Concept
REST Concept
ChangHyeon Bae
 
Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)
광희 조
 
API Management Reference Architecture
API Management Reference ArchitectureAPI Management Reference Architecture
API Management Reference Architecture
Seong-Bok Lee
 
ASP.NET Web API를 이용한 오픈 API 개발
ASP.NET Web API를 이용한 오픈 API 개발ASP.NET Web API를 이용한 오픈 API 개발
ASP.NET Web API를 이용한 오픈 API 개발
SangHoon Han
 
100.RED HAT SINGLE SIGN-ON
100.RED HAT SINGLE SIGN-ON100.RED HAT SINGLE SIGN-ON
100.RED HAT SINGLE SIGN-ON
Opennaru, inc.
 
Amazon Cognito를 활용한 모바일 인증 및 보안, 자원 접근 제어 기법 - AWS Summit Seoul 2017
Amazon Cognito를 활용한 모바일 인증 및 보안, 자원 접근 제어 기법 - AWS Summit Seoul 2017Amazon Cognito를 활용한 모바일 인증 및 보안, 자원 접근 제어 기법 - AWS Summit Seoul 2017
Amazon Cognito를 활용한 모바일 인증 및 보안, 자원 접근 제어 기법 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
RED HAT SINGLE SIGN-ON
RED HAT SINGLE SIGN-ONRED HAT SINGLE SIGN-ON
RED HAT SINGLE SIGN-ON
Opennaru, inc.
 
Restfull api
Restfull apiRestfull api
Restfull api
JAEHYUN LIM
 
220302 사내세미나_오정민 REST API와 크롤링
220302 사내세미나_오정민 REST API와 크롤링220302 사내세미나_오정민 REST API와 크롤링
220302 사내세미나_오정민 REST API와 크롤링
DataUs
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
Terry Cho
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
Wooyoung Ko
 
REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfREST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdf
Ho Jeong Im
 
Booting Spring Data REST
Booting Spring Data RESTBooting Spring Data REST
Booting Spring Data REST
경원 이
 
2Naver Open Android API Translation At DCamp
2Naver Open Android API Translation At DCamp2Naver Open Android API Translation At DCamp
2Naver Open Android API Translation At DCamp
Jeikei Park
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
Tommy Lee
 
Wso2 api manager 특징 slide share
Wso2 api manager 특징   slide shareWso2 api manager 특징   slide share
Wso2 api manager 특징 slide share
정명훈 Jerry Jeong
 
Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발
Sukjoon Kim
 
RESTful pattern policy
RESTful pattern policyRESTful pattern policy
RESTful pattern policy
Namhoon Kim
 
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API 안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
Gosu Ok
 

Similar to REST (20)

WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술
 
REST Concept
REST ConceptREST Concept
REST Concept
 
Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)
 
API Management Reference Architecture
API Management Reference ArchitectureAPI Management Reference Architecture
API Management Reference Architecture
 
ASP.NET Web API를 이용한 오픈 API 개발
ASP.NET Web API를 이용한 오픈 API 개발ASP.NET Web API를 이용한 오픈 API 개발
ASP.NET Web API를 이용한 오픈 API 개발
 
100.RED HAT SINGLE SIGN-ON
100.RED HAT SINGLE SIGN-ON100.RED HAT SINGLE SIGN-ON
100.RED HAT SINGLE SIGN-ON
 
Amazon Cognito를 활용한 모바일 인증 및 보안, 자원 접근 제어 기법 - AWS Summit Seoul 2017
Amazon Cognito를 활용한 모바일 인증 및 보안, 자원 접근 제어 기법 - AWS Summit Seoul 2017Amazon Cognito를 활용한 모바일 인증 및 보안, 자원 접근 제어 기법 - AWS Summit Seoul 2017
Amazon Cognito를 활용한 모바일 인증 및 보안, 자원 접근 제어 기법 - AWS Summit Seoul 2017
 
RED HAT SINGLE SIGN-ON
RED HAT SINGLE SIGN-ONRED HAT SINGLE SIGN-ON
RED HAT SINGLE SIGN-ON
 
Restfull api
Restfull apiRestfull api
Restfull api
 
220302 사내세미나_오정민 REST API와 크롤링
220302 사내세미나_오정민 REST API와 크롤링220302 사내세미나_오정민 REST API와 크롤링
220302 사내세미나_오정민 REST API와 크롤링
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
 
REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfREST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdf
 
Booting Spring Data REST
Booting Spring Data RESTBooting Spring Data REST
Booting Spring Data REST
 
2Naver Open Android API Translation At DCamp
2Naver Open Android API Translation At DCamp2Naver Open Android API Translation At DCamp
2Naver Open Android API Translation At DCamp
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
Wso2 api manager 특징 slide share
Wso2 api manager 특징   slide shareWso2 api manager 특징   slide share
Wso2 api manager 특징 slide share
 
Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발
 
RESTful pattern policy
RESTful pattern policyRESTful pattern policy
RESTful pattern policy
 
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API 안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
 

REST

  • 2. REST의 3요소  메서드  무엇을 할 것인가?  리소스  행위의 대상  리소스 지향 아키텍처 스타일답게 모든것을 리소스(명사)로 표현함(REST형태의 디자인)  Push 메시지를 보낸다 → /myweb/sendpush(X)  Push 메시지 요청을 생성한다 → POST/myweb/push(O)  메시지  행위의 내용 메서드 의미 POST Create GET Select PUT Update DELETE Delete
  • 3. REST의 특성  유니폼 인터페이스(Uniform Interface)  HTTP 표준만 따르면 어떠한 기술(언어)이든지 사용가능  무상태성(Stateless)  Client의 context를 서버쪽에 유지하지 않음  API서버는 들어오는 요청만 메시지로 처리하면 됨  캐시 가능(Cacheable) Client REST Component GET/partners/UK 304 Not Modified(No content)
  • 4. REST의 특성  자체표현구조(Self-descriptiveness)  API메시지만 보고도 이해 할 수 있는 자체 표현 구조  클라이언트 서버 구조(Client-Server)  클라이언트와 서버간 개발 의존성이 줄어듦  계층형 구조(Layered System) Client Server 사용자 인증, Context(세션, 로그인정보) 직접 관리 API제공, 비즈니스 로직 처리 및 저장 Client Server Side API Call 사용자 인증 암호화 로드 밸런스 … Server Server Server Server Server Server
  • 5. REST 안티 패턴  GET/POST를 이용한 터널링  HTTP응답 코드를 사용하지 않음  성공은 200, 실패는 500과 같이 1~2개의 HTTP응답 코드만 사용하는 경우 터널링 잘못된 내용 HTTP GET, http://myweb/users?method=update&id=terry 실제 동작은 리소스를 업데이트 하는 내용인데 HTTP PUT을 사용하지 않고 GET에 쿼리 파라미터로 method=update를 사용함 HTTP POST, http://myweb/users/ { “getuser”:{ “id”:”terry”, } } Insert가 아닌데도 POST메소드를 통해 JSON바디에 operation명을 넘기는 형태
  • 6. REST의 문제점  JSON + HTTP를 쓰면 REST인가?  리소스를 제대로 정의하고 이에 대한 CRUD를 HTTP 메서드인 POST/PUT/GET/DELETE에 맞춰 사용해야 함  표준 규약이 없다  표준이 없어 관리가 어렵다(메시지 구조에 대한 정의 및 규약이 없다)  사용할 REST에 대한 자체 표준을 정해야 함  프로젝트 별 REST API표준 가이드 및 API Spec문서를 만들어야 함  전통적인 RDBMS에 적용하기 쉽지 않다  Primary key가 단일key가 아닐경우 URI표현이 매우 부자연스러워짐  대체key사용 → 전체 DB구조 변경해야함
  • 7. REST API 보안  인증(Authentication)  API키 방식  Client는 API키를 발급받고 API를 호출할때 API키를 메시지에 넣어서 호출  모든 클라이언트가 API키를 공유하기 때문에 한번 API키가 노출되면 전체 API가 뚫림  API토큰 방식  ID/비밀번호 등으로 사용자 인증 후 사용제한 기간이 있는 API토큰을 발급  API토큰을 탈취당하면 API call은 가능하지만 사용자의 ID/비밀번호는 탈취 당하지 않음  HTTP Basic Auth, Digest Access Authentication, OAuth 2.0등  JWT(Json Web Token)방식  사용자에 대한 추가정보를 토큰에 저장함  사용자의 접근 권한을 추가적으로 확인할 필요가 없음 { “id”:”terry” , “role”:[“admin”,”user”] , “company”:”pepsi” }
  • 8. REST API 보안  권한 인가(Authorization)  API인가 방식  사용자의 역할 기반(Admin, User, …)  사용자에게 API별 직접 권한 부여  API권한 인가 처리 위치  네트워크(전송) 레벨 암호화  HTTPS보안 프로토콜 : 가장 기본적이고 필수적인 REST API 보안방법  추가적으로 공인인증서 사용에 대해 검토 해야 함  메시지 본문 암호화  메시지 무결성 보장  HMAC등 위치 특징 클라이언트 클라이언트를 신뢰 할 수 있을 경우에만 사용 가능 게이트웨이 사용자 권한 인증에 필요한 데이터가 있을 수 있기 때문에 사용하기 어려움 서버 일반적이고 보편적인 방법, 비즈니스 로직에 구현