SlideShare a Scribd company logo
1 of 26
Download to read offline
0
RESTful API
가천대학교
컴퓨터공학과
201133259
이상백
1
INDEX.
RESTful?
In Node.js
Rest architecture
REST API
1
3
2
4
2
RESTful?
Representational State Transfer
1
RESTful API~한 Application Programming Interface
편안한?
3
RESTful?
http://eclass.gachon.ac.kr/board/list.jsp?Forum_seq=115317&Menu_seq=837537
1
RESTful uri
RESTful uri 는 어떻게 생겼나요?
nonRESTful uri
https://www.facebook.com/groups/codingeverybody/members
4
RESTful?
http://eclass.gachon.ac.kr/board/list.jsp?Forum_seq=115317&Menu_seq=837537
1
RESTful uri
목록을 읽는 URI의 경우
nonRESTful uri
https://www.facebook.com/groups/codingeverybody/members
이런 카테코리야 이름은 이거구 세부 메뉴는 이거
5
RESTful?
http://eclass.gachon.ac.kr/board/write.jsp?Forum_seq=115317&Menu_seq=837537
1
RESTful uri
서버에 데이터를 보내는 URI의 경우
nonRESTful uri
https://www.facebook.com/groups/codingeverybody/members
..???
6
RESTful?
R - ../post/list.jsp (GET)
C - ../post/write.jsp (POST)
U - ../post/upadate.jsp (POST)
D - ../post/delete.jsp (POST)
1
RESTful uri
RESTful CRUD
nonRESTful uri
R - ../post (GET)
C - ../post (POST)
U - ../post (PUT)
D - ../post (DELETE)
CRUD?
CRUD는 대부분의 컴퓨터 소프트웨어가
가지는 기본적인 데이터 처리 기능인
Create(생성), Read(읽기),
Update(갱신), Delete(삭제)
를 묶어서 일컫는 말이다.
7
REST Architecture
2Representational State Transfer
로이 필딩(roy fielding)
HTTP의 주요 저자 중 한 사람
REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산
하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다.
엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워
크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반
을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키
를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한
인터페이스를 말한다. 이 두 가지의 의미는 겹치는 부분과 충돌되는 부분이 있
다. 필딩의 REST 아키텍처 형식을 따르면 HTTP나 WWW이 아닌 아주 커다
란 소프트웨어 시스템을 설계하는 것도 가능하다. 또한, 리모트 프로시저 콜
대신에 간단한 XML과 HTTP 인터페이스를 이용해 설계하는 것도 가능하다.
출처: https://ko.wikipedia.org/wiki/REST
8
REST Architecture
26가지 제한 조건
클라이언트/
서버 구조
무상태
캐시 처리
가능
계층화
Code on
demand
인터페이스
일관성
출처: http://blog.naver.com/awesomedev/220725884070
9
REST Architecture
26가지 제한 조건
클라이언트/
서버 구조
- REST 서버는 API를 제공하고, 제공된 API를 이용해서 비즈니스 로직 처리
및 저장을 책임진다.
- 클라이언트의 경우 사용자 인증이나 컨택스트(세션,로그인 정보)등을 직
접 관리하고 책임 진다.
10
REST Architecture
26가지 제한 조건
무상태
(Stateless)
REST는 REpresentational State Transfer 의 약어로 Stateless (상태
유지하지 않음)이 특징 중의 하나이다.
상태가 있다 없다는 의미는 사용자나 클라이언트의 컨택스트를 서버쪽에 유
지 하지 않는다는 의미로, 쉽게 표현하면 HTTP Session과 같은 컨텍스트
저장소에 상태 정보를 저장하지 않는 형태를 의미한다. 상태 정보를 저장하
지 않으면 각 API 서버는 들어오는 요청만을 들어오는 메시지로만 처리하면
되며, 세션과 같은 컨텍스트 정보를 신경쓸 필요가 없기 때문에 구현이 단순
해진다.
11
REST Architecture
26가지 제한 조건
캐시 처리
가능
REST의 큰 특징 중의 하나는 HTTP라는 기존의 웹 표준을 그대로 사용하기
때문에, 웹에서 사용하는 기존의 인프라를 그대로 활용이 가능하다. HTTP
프로토콜 기반의 로드 밸런서나 SSL은 물론이고, HTTP가 가진 가장 강력한
특징중의 하나인 캐슁 기능을 적용할 수 있다.
12
REST Architecture
26가지 제한 조건
계층화
- 클라이언트 입장에서는 REST API 서버만 호출한다.
- 서버는 다중 계층으로 구성될 수 있다. 순수 비즈니스 로직을 수행하는 API
서버와 그 앞단에 사용자 인증 (Authentication), 암호화 (SSL), 로드밸런
싱등을 하는 계층을 추가해서 구조상의 유연성을 줄 수 있다.
REST
API
13
REST Architecture
26가지 제한 조건
인터페이스
일관성
REST는 HTTP 표준에만 따른 다면, 어떠한 기술이라던지 사용이 가능한 인
터페이스 스타일이다. 예를 들어 HTTP + JSON으로 REST API를 정의했다
면, 안드로이드 플랫폼이건, iOS 플랫폼이건, 또는 C나 Java/Python이건
특정 언어나 기술에 종속 받지 않고 HTTP와 JSON을 사용할 수 있는 모든
플랫폼에 사용이 가능한 느슨한 결함(Loosely coupling) 형태의 구조이다.
14
REST Architecture
26가지 제한 조건
Code on
demand
자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을
전송하여 기능을 확장시킬 수 있다.
=> ‘클라이언트 스크립팅’ 이라고 하며, 데이터는 물론 코드까지 클라이언트
로 전송하여 서버의 부담을 클라이언트에게 나눠준다.
Javascript code
15
In Node.js
3Express에서의 사용법
1
2
3
4
5
6
7
8
9
10
11
12
const express = require('express');
const app = express();
app.get('/user/post', (req, res) => {
res.send('hello world!');
});
app.post('/user/post', callback);
app.put('/user/post', callback);
app.delete('/user/post', callback);
16
In Node.js
3Express에서의 사용법
1
2
3
4
5
6
7
app.get('/:user/:post', (req, res) => {
const user = req.params.user;
const post = req.params.post;
res.send('your name is ' + user);
});
=> http://blog.naver.com/awesomedev/220725884070
17
REST API
4API 목록
정부 공공데이터
https://www.data.go.kr
18
REST API
4API 목록
트위터
https://dev.twitter.com/rest
19
REST API
4API 목록
카카오톡 플러스친구 자동응답
https://yellowid.kakao.com
https://github.com/plusfriend/auto_reply
20
REST API
4카카오톡 봇을 만들어보자
카카오톡 플러스친구
https://yellowid.kakao.com
21
REST API
4카카오톡 봇을 만들어보자
22
REST API
4카카오톡 봇을 만들어보자
23
REST API
4카카오톡 봇을 만들어보자
24
REST API
4카카오톡 봇을 만들어보자
25
감사합니다.

More Related Content

What's hot

What's hot (20)

introduction about REST API
introduction about REST APIintroduction about REST API
introduction about REST API
 
API Testing for everyone.pptx
API Testing for everyone.pptxAPI Testing for everyone.pptx
API Testing for everyone.pptx
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding REST
 
Introduction to REST - API
Introduction to REST - APIIntroduction to REST - API
Introduction to REST - API
 
Api Testing
Api TestingApi Testing
Api Testing
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developers
 
API Design- Best Practices
API Design-   Best PracticesAPI Design-   Best Practices
API Design- Best Practices
 
Introduction to API
Introduction to APIIntroduction to API
Introduction to API
 
REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & Development
 
What is an API
What is an APIWhat is an API
What is an API
 
Reverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and VarnishReverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and Varnish
 
Soap vs rest
Soap vs restSoap vs rest
Soap vs rest
 
OKKY Jobs Guideline v.2.5
OKKY Jobs Guideline v.2.5OKKY Jobs Guideline v.2.5
OKKY Jobs Guideline v.2.5
 
What is API - Understanding API Simplified
What is API - Understanding API SimplifiedWhat is API - Understanding API Simplified
What is API - Understanding API Simplified
 
Best practices for RESTful web service design
Best practices for RESTful web service designBest practices for RESTful web service design
Best practices for RESTful web service design
 
HA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and KeepalivedHA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and Keepalived
 
How to use histograms to get better performance
How to use histograms to get better performanceHow to use histograms to get better performance
How to use histograms to get better performance
 
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
 
Postman.ppt
Postman.pptPostman.ppt
Postman.ppt
 
Getting started with postgresql
Getting started with postgresqlGetting started with postgresql
Getting started with postgresql
 

Similar to RESTful API

Similar to RESTful API (20)

Restfull api
Restfull apiRestfull api
Restfull 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 Ovewview
REST OvewviewREST Ovewview
REST Ovewview
 
REST Concept
REST ConceptREST Concept
REST Concept
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
 
REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfREST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdf
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
RESTful pattern policy
RESTful pattern policyRESTful pattern policy
RESTful pattern policy
 
Srping data rest
Srping data restSrping data rest
Srping data rest
 
SOAP 기반/ RESTful기반 웹서비스 비교
SOAP 기반/ RESTful기반 웹서비스 비교SOAP 기반/ RESTful기반 웹서비스 비교
SOAP 기반/ RESTful기반 웹서비스 비교
 
RESTful API 손쉽게 사용하기
RESTful API 손쉽게 사용하기RESTful API 손쉽게 사용하기
RESTful API 손쉽게 사용하기
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬) Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
 
CRUD Pattern in Ajax
CRUD Pattern in AjaxCRUD Pattern in Ajax
CRUD Pattern in Ajax
 
WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계
 

RESTful API

  • 3. 2 RESTful? Representational State Transfer 1 RESTful API~한 Application Programming Interface 편안한?
  • 4. 3 RESTful? http://eclass.gachon.ac.kr/board/list.jsp?Forum_seq=115317&Menu_seq=837537 1 RESTful uri RESTful uri 는 어떻게 생겼나요? nonRESTful uri https://www.facebook.com/groups/codingeverybody/members
  • 5. 4 RESTful? http://eclass.gachon.ac.kr/board/list.jsp?Forum_seq=115317&Menu_seq=837537 1 RESTful uri 목록을 읽는 URI의 경우 nonRESTful uri https://www.facebook.com/groups/codingeverybody/members 이런 카테코리야 이름은 이거구 세부 메뉴는 이거
  • 6. 5 RESTful? http://eclass.gachon.ac.kr/board/write.jsp?Forum_seq=115317&Menu_seq=837537 1 RESTful uri 서버에 데이터를 보내는 URI의 경우 nonRESTful uri https://www.facebook.com/groups/codingeverybody/members ..???
  • 7. 6 RESTful? R - ../post/list.jsp (GET) C - ../post/write.jsp (POST) U - ../post/upadate.jsp (POST) D - ../post/delete.jsp (POST) 1 RESTful uri RESTful CRUD nonRESTful uri R - ../post (GET) C - ../post (POST) U - ../post (PUT) D - ../post (DELETE) CRUD? CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제) 를 묶어서 일컫는 말이다.
  • 8. 7 REST Architecture 2Representational State Transfer 로이 필딩(roy fielding) HTTP의 주요 저자 중 한 사람 REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워 크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반 을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키 를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다. 이 두 가지의 의미는 겹치는 부분과 충돌되는 부분이 있 다. 필딩의 REST 아키텍처 형식을 따르면 HTTP나 WWW이 아닌 아주 커다 란 소프트웨어 시스템을 설계하는 것도 가능하다. 또한, 리모트 프로시저 콜 대신에 간단한 XML과 HTTP 인터페이스를 이용해 설계하는 것도 가능하다. 출처: https://ko.wikipedia.org/wiki/REST
  • 9. 8 REST Architecture 26가지 제한 조건 클라이언트/ 서버 구조 무상태 캐시 처리 가능 계층화 Code on demand 인터페이스 일관성 출처: http://blog.naver.com/awesomedev/220725884070
  • 10. 9 REST Architecture 26가지 제한 조건 클라이언트/ 서버 구조 - REST 서버는 API를 제공하고, 제공된 API를 이용해서 비즈니스 로직 처리 및 저장을 책임진다. - 클라이언트의 경우 사용자 인증이나 컨택스트(세션,로그인 정보)등을 직 접 관리하고 책임 진다.
  • 11. 10 REST Architecture 26가지 제한 조건 무상태 (Stateless) REST는 REpresentational State Transfer 의 약어로 Stateless (상태 유지하지 않음)이 특징 중의 하나이다. 상태가 있다 없다는 의미는 사용자나 클라이언트의 컨택스트를 서버쪽에 유 지 하지 않는다는 의미로, 쉽게 표현하면 HTTP Session과 같은 컨텍스트 저장소에 상태 정보를 저장하지 않는 형태를 의미한다. 상태 정보를 저장하 지 않으면 각 API 서버는 들어오는 요청만을 들어오는 메시지로만 처리하면 되며, 세션과 같은 컨텍스트 정보를 신경쓸 필요가 없기 때문에 구현이 단순 해진다.
  • 12. 11 REST Architecture 26가지 제한 조건 캐시 처리 가능 REST의 큰 특징 중의 하나는 HTTP라는 기존의 웹 표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존의 인프라를 그대로 활용이 가능하다. HTTP 프로토콜 기반의 로드 밸런서나 SSL은 물론이고, HTTP가 가진 가장 강력한 특징중의 하나인 캐슁 기능을 적용할 수 있다.
  • 13. 12 REST Architecture 26가지 제한 조건 계층화 - 클라이언트 입장에서는 REST API 서버만 호출한다. - 서버는 다중 계층으로 구성될 수 있다. 순수 비즈니스 로직을 수행하는 API 서버와 그 앞단에 사용자 인증 (Authentication), 암호화 (SSL), 로드밸런 싱등을 하는 계층을 추가해서 구조상의 유연성을 줄 수 있다. REST API
  • 14. 13 REST Architecture 26가지 제한 조건 인터페이스 일관성 REST는 HTTP 표준에만 따른 다면, 어떠한 기술이라던지 사용이 가능한 인 터페이스 스타일이다. 예를 들어 HTTP + JSON으로 REST API를 정의했다 면, 안드로이드 플랫폼이건, iOS 플랫폼이건, 또는 C나 Java/Python이건 특정 언어나 기술에 종속 받지 않고 HTTP와 JSON을 사용할 수 있는 모든 플랫폼에 사용이 가능한 느슨한 결함(Loosely coupling) 형태의 구조이다.
  • 15. 14 REST Architecture 26가지 제한 조건 Code on demand 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다. => ‘클라이언트 스크립팅’ 이라고 하며, 데이터는 물론 코드까지 클라이언트 로 전송하여 서버의 부담을 클라이언트에게 나눠준다. Javascript code
  • 16. 15 In Node.js 3Express에서의 사용법 1 2 3 4 5 6 7 8 9 10 11 12 const express = require('express'); const app = express(); app.get('/user/post', (req, res) => { res.send('hello world!'); }); app.post('/user/post', callback); app.put('/user/post', callback); app.delete('/user/post', callback);
  • 17. 16 In Node.js 3Express에서의 사용법 1 2 3 4 5 6 7 app.get('/:user/:post', (req, res) => { const user = req.params.user; const post = req.params.post; res.send('your name is ' + user); }); => http://blog.naver.com/awesomedev/220725884070
  • 18. 17 REST API 4API 목록 정부 공공데이터 https://www.data.go.kr
  • 20. 19 REST API 4API 목록 카카오톡 플러스친구 자동응답 https://yellowid.kakao.com https://github.com/plusfriend/auto_reply
  • 21. 20 REST API 4카카오톡 봇을 만들어보자 카카오톡 플러스친구 https://yellowid.kakao.com