REST와 RESTful의 차이점은 무엇입니까


540

REST 시스템과 RESTful 시스템의 차이점은 무엇입니까?

내가 가장 많이 읽은 몇 가지 사항에서 REST 서비스는 실제로 RESTful 서비스입니다. 두 가지의 차이점은 무엇입니까?


3
질문의 이유는 링크에서 기사를 읽고 Dr Fielding 박사가 대부분의 REST 구현에 대해 어떻게 생각하는지 살펴보면 전혀 REST 시스템이 아닙니다. RESTful 동작을 나타내지 만 REST 시스템으로 분류 할 수 없습니다.
AwkwardCoder

4
나는 기사를 읽었지만 그것이 의미 적으로 쓸모없는 구별로 그를 이끌지 않았다고 생각합니다.
JasonTrue

3
REST에 관한 Wikipedia 기사 -en.wikipedia.org/wiki/Representational_State_Transfer- 두 번째 단락- "REST 제한 조건 준수는 종종 'RESTful'이라고합니다."
Nate

1
@PramodNikumbh이 아래에 올바르게 답변했습니다. "REST"시스템은 광범위한 REST 정의에 적합한 시스템입니다. 그것은 적어도 몇 가지 휴식 원칙을 보여줍니다. "Restful"은 훨씬 더 REST 호환 시스템을 설명합니다.
앤드류 노먼

글쎄, 나는 이름에 혼란이 있다고 생각합니다. RESTful의 "풀"은 상태 비 저장과 상태 저장을 혼동 할 것이며, 개인적 견해로는 REST와 RESTful이라는 두 가지 다른 것이 STATELESS 여야합니다. RESTles라는 상태 저장 REST를 상상해보십시오. :)
Waheed

답변:


487

REST (Representational State Transfer) 는 소프트웨어 아키텍처 스타일입니다. Roy Fielding의 논문에서 설명했듯이 REST는 기본적으로 웹의 기존 기술과 프로토콜을 활용하는 "아키텍처 스타일"입니다.

RESTful은 일반적으로 이러한 아키텍처를 구현하는 웹 서비스를 나타내는 데 사용됩니다.


146
그렇다면 REST는 아키텍처이고 RESTful은 형용사입니까?
manei_cc

4
@manei_cc : 실제로는 REST 아키텍처를 따르지 않고 기본적으로 REST 유사, REST-wannabies 등 RESTful이라는 서비스가 있지만 REST를 사용하여 "RESTful 서비스"가 반드시 구축되는 것은 아니라는 점에 항상주의하십시오 저스틴에 티어 (Justin Ethier)가 썼 듯이 웹의 기존 기술과 프로토콜을 이용한다 .
Azder

7
RESTful은 실제로 REST를 존중하는 API에 사용해야합니다. GET 또는 POST 만 사용하는 "REST"웹 서비스가 너무 많습니다. HTTP 동사와 URL 명명 규칙을 완전히 사용하면 RESTful이 강조됩니다. 그러나 그것은 내 관점이다.
Martin

1
architect어떤? URL? 같은 https://translation.googleapis.com/language/translate/v2이 나머지 스타일은?
Asif Mushtaq

1
stackoverflow.com/users/3807248/pramod-nikumbh 이 답변에 올바르게 답변했습니다
Andrew Norman

193

REST 기반 서비스 / 아키텍처 및 RESTFUL 서비스 / 아키텍처

이 2를 구별하거나 비교하려면 REST 가 무엇인지 알아야합니다 .

REST는 ( RE 표상 S 탓에 T 를 ransfer) 기본적으로 개발 몇 가지 원칙을 갖는 건축 스타일 :

  • 무국적이어야한다

  • URI 만 사용하여 서버에서 모든 리소스에 액세스해야합니다.

  • 내장 암호화가 없습니다.

  • 세션이 없습니다

  • 하나의 프로토콜 만 사용합니다-HTTP

  • CRUD 작업을 수행하기 위해, 이러한 동사 HTTP를 사용해야하는 등 get, post, putdelete

  • JSON 또는 XML, atom, OData 등의 형식으로 만 결과를 리턴해야합니다 (경량 데이터).

REST based services 위의 원칙 중 일부를 따르십시오.

RESTFUL services 위의 모든 원칙을 준수한다는 의미입니다.

다음과 같은 개념과 유사합니다.

Object-based languages모든 OOP 개념, 예제 지원 : C ++, C #

Object oriented languages죄송 기능의 일부를 지원 자바 스크립트, VB를 :


:

ASP Dot NET MVC 4는 REST-BasedMicrosoft WEB API가있는 동안입니다 RESTFul.

MVC는 위의 REST 원칙 중 일부만 지원하는 반면 WEB API는 위의 모든 REST 원칙을 지원합니다.

MVC는 REST API에서만 다음을 지원합니다.

  • URI를 사용하여 리소스에 액세스 할 수 있습니다

  • 서버에서 리소스에 액세스하기 위해 HTTP 동사를 지원합니다.

  • 결과는 JSON, XML 형식 (HTTPResponse)으로 결과를 리턴 할 수 있습니다.

그러나 MVC에서 동시에

  • 우리는 세션을 사용할 수 있습니다

  • 우리는 그것을 stateful로 만들 수 있습니다

  • 기본적으로 REST 원칙을 위반하는 컨트롤러 작업 방법에서 비디오 또는 이미지를 반환 할 수 있습니다.

그렇기 때문에 MVC는 REST-BasedWEB API가 위의 모든 원칙을 지원하고 있습니다 RESTFul.


10
이것이 왜 다운 다운되었는지 이해하지 못합니다.이 답변은 많은 명확한 정보를 질문에 제공합니다.
Marcovecchio

5
지금까지 가장 좋은 답변
Limon

2
이것이 가장 좋은 대답입니다.
Mário Meyrelles

2
REST와 함께 FTP를 사용할 수 있습니다. 참조하십시오 : stackoverflow.com/questions/35534812/…
crazyTech

7
위의 "개체 기반"및 "개체 지향"범주의 언어는 반대로되어 있습니다. 객체 지향 언어는 모든 OOPS 원칙을 따르고 객체 기반 언어는 일부를 따릅니다.
Mr.

119

"REST"는 건축 패러다임입니다. "RESTful"은 해당 패러다임 사용을 설명합니다.


architect어떤? URL? 같은 https://translation.googleapis.com/language/translate/v2이 나머지 스타일은?
Asif Mushtaq

2
REST 아키텍처에는 많은 특성이 필요합니다. URL을 표시하여 REST 원칙을 준수한다고 말할 수는 없습니다.
SingleShot

42

Jason이 의견에서 말했듯이 RESTful은 REST 제약 조건을 존중하는 것을 형용사로 사용합니다.


29

REST는 표현 상태 전송을 나타냅니다. 그것은 국가 자체가 이전되는 것이 아니라 단지 국가의 표현이라는 것을 의미합니다. 가장 일반적인 예는 순수한 HTML 서버 기반 앱입니다 (자바 스크립트 없음). 브라우저는 응용 프로그램 자체에 대해서는 아무것도 모르지만 링크와 리소스를 통해 서버는 응용 프로그램의 상태를 브라우저로 전송할 수 있습니다. 일반 Windows 응용 프로그램에서 단추가 일반적으로 상태 변수 (예 : 페이지 열기)를 변경하는 경우 브라우저에는 해당 상태 변경을 나타내는 링크가 있습니다.

아이디어는 하이퍼 미디어를 사용하는 것입니다. 그리고 아마도 새로운 하이퍼 미디어 유형을 만들 수도 있습니다. 잠재적으로 우리는 javascript / AJAX로 브라우저를 확장하고 새로운 사용자 정의 하이퍼 미디어 유형을 만들 수 있습니다. 그리고 우리는 진정한 REST 애플리케이션을 가질 것입니다.

이것은 REST의 약자 인 짧은 버전입니다. 문제는 구현하기 어렵다는 것입니다. REST 원칙을 참조하고 싶을 때 개인적으로 RESTful이라고 말하지만 실제로 REST의 전체 개념을 구현하고 있지는 않습니다. 우리는 SOAPful을 사용하지 않기 때문에 실제로 SOAPful을 말하지 않습니다. 필자는 대부분의 사람들이 개발자 Roy Fielding이 계획 한 방식으로 REST를 수행하지 않는다고 생각합니다. 실제로 RESTful 또는 RESTlike 아키텍처를 구현합니다. 그의 논문을 볼 수 있으며 REST 약어는 있지만 RESTful이라는 단어는 없습니다.


23

REST는 분산 소프트웨어를위한 소프트웨어 아키텍처 스타일입니다.

REST 제약 조건을 준수하는 것을 'RESTful'이라고합니다.

오늘날 SOAP에 대한 대안으로 웹 서비스를 구축하는 데 사용됩니다.

여기에 확인할 링크가 있습니다

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/


13

답변 주셔서 감사합니다. Alex Rodriguez 의이 기사 를 읽으십시오 . RESTful 웹 서비스에는 다음과 같은 4 가지 기본 특성이 있습니다.

  1. HTTP 메소드를 명시 적으로 사용하십시오.
  2. 무국적자가 되십시오.
  3. 디렉토리 구조와 유사한 URI를 노출하십시오.
  4. XML, JSON (JavaScript Object Notation) 또는 둘 다를 전송하십시오.

실제로 6 개의 제약 조건이 있습니다.
IronBlossom

2
@IronBlossom 누락 된 두 가지로 답변을 업데이트 하시겠습니까?
Paul Fleming

1
링크가
끊어지면

10

REST (Representational State Transfer)는 World Wide Web과 같은 분산 하이퍼 미디어 시스템을위한 소프트웨어 아키텍처 스타일입니다. Representational State Transfer라는 용어는 2000 년 Roy Fielding 1에 의해 그의 박사 학위 논문 에 도입되고 정의되었습니다 . 필딩은 HTTP (Hypertext Transfer Protocol) 사양 버전 1.0 및 1.1의 주요 저자 중 하나입니다. REST 제약 조건을 준수하는 것을 'RESTful'이라고합니다. 출처 : 위키 백과


8

웹 서비스는 본질적으로 사람이 아닌 컴퓨터 프로그램에서 콘텐츠를 사용하는 웹 사이트입니다. REST는 웹 서비스가 HTTP 및 기타 웹 표준을 최대한 활용하여 프로그램이 사람들이 이미 웹에서 얻을 수있는 모든 좋은 것을 얻도록 규정하는 일련의 아키텍처 원칙입니다. REST는 종종 SOAP 웹 서비스 및 기타 "원격 프로 시저 호출"지향 웹 서비스와 대조됩니다.

Stefan Tilkov의 Parleys.com에서 REST에 대한 프레젠테이션은 특히 좋습니다 .

책의 경우 Richardson과 Ruby의 Restful Web Services 보다 더 나을 수는 없습니다 .


일반 웹 사이트를 REST 애플리케이션으로 간주 할 수 있습니까?
yoyo_fun

1
@yoyo_fun : 그렇습니다. 일반 웹 사이트도 RESTful하게 구성 할 수 있습니다. 추상화의 일부 수준에서 서버가 HTML을 사람에게 반환하는지 JSON으로 프로그램에 반환하는지는 중요하지 않습니다.
Jim Ferrans


4

Richardson Maturity Model에는 4 가지 수준의 API가 정의되어 있습니다. 이들은 다음과 같이 정의됩니다.

  • 레벨 0 : 모든 API에 대해 단일 엔드 포인트가있는 시스템 (SOAP 또는 RPC가이 범주에 해당). 레벨 0 api는 "명령"과 유사 할 수 있습니다.

  • 레벨 1 : ResourceUri 기술 시스템. 레벨 0 시스템과 같은 단일 엔드 포인트가 아닌 여러 엔티티 기반 URI를 정의하는 시스템입니다. 이러한 URI는 다른 http 조치 (POST, GET, PUT 등)를 사용하여 해당 자원에 대해 다른 조치를 구현할 수 있습니다.

  • 레벨 2 : 표준 HTTP 메소드 / 동사 및 다중 상태 코드 응답을 준수하는 일명 레벨 1

  • 3 단계 : 일명 2 단계 + HATEOAS (응답에 하이퍼 미디어가 포함되어있어 추가 전화를 걸 수 있음)

레벨 1, 레벨 2 및 레벨 3은 REST 시스템으로 간주 될 수 있지만 더 엄격한 레벨 (일명 레벨 2 및 레벨 3) 만 RESTful로 간주됩니다.

따라서 본질적으로 모든 RESTful API는 REST API이지만 모든 REST API가 RESTful은 아닙니다.

Richardson 성숙도 모델의 정의


2

REST를 아키텍처 "클래스"로 생각하고 RESTful은 해당 클래스의 잘 알려진 "인스턴스"입니다.

""에 유의하십시오. 여기서는 "실제"프로그래밍 객체를 다루지 않습니다.


1

"REST 서비스"와 "RESTful 서비스"는 하나이며 동일합니다.

RESTful 시스템은 RESTful 네트워크 애플리케이션의 아이디어를 만든 원본 문서에 정의 된 REST 규칙을 따르는 시스템입니다 .

다양한 수준의 RESTfulness가 있음을 주목할 가치가 있습니다. 전반적으로 REST는 표준이 아닌 스타일이므로 필요에 따라 해석 할 여지가 있습니다. 한 가지 예는 계층 적 리소스 URL (예 /things/ID/relatedthings:)과 플랫 URL (예 : /things/ID/relatedthings?thing=ID)입니다.


1

REST (REpresentation State Transfer)는 WebService를 작성하는 데 사용되는 아키텍처입니다.

RESTful은 REST 아키텍처를 사용하여 서비스를 작성하는 방법입니다. RESTful 서비스는 클라이언트와 상호 작용할 대상을 식별하기 위해 자원을 노출합니다.


0

REST는 웹 서비스를 작성하기위한 아키텍처 패턴입니다. RESTful 서비스는 해당 패턴을 구현하는 서비스입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.