OData와 REST 웹 서비스의 차이점


196

일부 웹 서비스를 살펴보면서 Microsoft가 OData 라고 부르는이 "새로운"기술을 발견했습니다 . OData가 무엇인지에 대한 FAQ의 설명을 읽으면 OData를 REST-ful 웹 서비스와 구별하는 데 어려움을 겪고 있습니다. 누군가가 차이점을 이해하도록 도와 줄 수 있습니까?


2
하나는 생산자이고 다른 하나는 소비자를위한 인 에이 블러입니다.
Kangkan

답변:


98

업데이트 경고,이 답변은 OData V4를 사용할 수있게 되었기 때문에 최신 정보가 아닙니다.


나는이 주제에 대해 얼마 전에 여기 에 글을 썼습니다 .

Franci가 말했듯이 OData는 Atom Pub을 기반으로합니다. 그러나 일부 기능을 맨 위에 배치했으며 불행히도 프로세스의 일부 REST 제약 조건을 무시했습니다.

OData 서비스의 쿼리 기능을 사용하려면 응답에서 사용할 수 없거나 링크 된 정보를 기반으로 URI를 구성해야합니다. 이것이 REST 사람들이 대역 외 정보라고 부르는 것이며 클라이언트와 서버 사이에 숨겨진 결합을 도입합니다.

도입 된 다른 커플 링은 EDMX 메타 데이터를 사용하여 항목 컨텐츠에 포함 된 특성을 정의하는 것입니다. 이 메타 데이터는 $ metadata라는 고정 된 엔드 포인트에서 검색 할 수 있습니다. 다시 말하지만, 클라이언트는이를 미리 알아야하며,이를 발견 할 수 없습니다.

불행히도 Microsoft는 이러한 주요 데이터를 설명하기 위해 미디어 유형을 만드는 데 적합하지 않았으므로 모든 OData 클라이언트는 통신하는 서비스와 수신하는 데이터에 대해 많은 가정을해야합니다.


1
@felickz 죄송합니다. DNS 문제가있었습니다. 지금 작동해야합니다. 또는 dns 캐시가 만료 될 때입니다.
Darrel Miller

6
사실이 이다 구식. OData V3에는 이러한 문제를 해결하는 'JSON Light'이 추가되었습니다. 즉, $ metadata는 쿼리 작성 방법을 알고 있으므로 누락 된 것은 리소스 표현에서 $ metadata에 대한 링크입니다. 추가되었으므로 두 가지 문제가 모두 사라집니다.
Alex James

10
@DarrelMiller 귀하는 귀하의 답변이 구식이라고 언급했습니다. 주제에 대한 의견이 있으시면 업데이트를 추가 하시겠습니까? 여전히 OData 4와 REST의 차이점을 알고 싶습니다. 많은 감사
Kurren

2
@ Kurren 그것은 할 일 목록에 있지만 불행히도 긴 목록입니다.
대럴 밀러

2
@DarrelMiller OData V4로 게시물을 업데이트하기 위해 언젠가 게시물을 업데이트 할 시간이 있기를 바랍니다.
LCJ

64

OData 프로토콜은 AtomPub 프로토콜 위에 구축됩니다. AtomPub 프로토콜은 REST API 디자인의 가장 좋은 예 중 하나입니다. 따라서 OData는 다른 REST API 일 뿐이며 각 OData 구현은 REST-ful 웹 서비스입니다.

차이점은 OData가 특정 프로토콜이라는 것입니다. REST는 아키텍처 스타일과 디자인 패턴입니다.


나는 이것에 대해 틀릴 수도 있지만 (방금 odata에 대해 배우기 시작했지만) [protocol] [ odata.org/documentation] 버전 3 부터는 JSON 형식이 지정되어 나타납니다. 이것에 약간의 빛을 비출 수 있습니까?
Johannes Rudolph

1
@JohannesRudolph, 솔직히 나는 모른다. 지난 2 년 동안 OData를 보지 않았습니다. 그러나 Microsoft가 JSON 지원을 추가했을 가능성이 큽니다. 그러나 이것이 어떤 식 으로든 응답을 변경하지는 않습니다. JSON과 XML은 REST 리소스를 표시하는 문제 일뿐입니다.
Franci Penov

1
요청에서 원하는 형식을 지정할 수 있습니다. XML과 JSON은 대부분 구현에서 Accept 헤더를 application / json (OData 버전 2에서 시작)으로 설정하여 지원해야합니다.
i000174

31

REST는 웹 서비스에 액세스하는 방법을 설명하는 데 사용되는 일반적인 디자인 기술입니다. REST를 사용하면 데이터를 얻기 위해 http 요청을 할 수 있습니다. 브라우저에서 시도하면 웹 페이지를 반환하는 대신 웹 사이트를 방문하는 것과 같습니다. XML을 다시 가져옵니다. 일부 서비스는 또한 Javascript와 함께 사용하기 쉬운 JSON 형식으로 데이터를 반환합니다.

OData는 REST를 통해 데이터를 노출하는 특정 기술입니다.

실제로 요약하면 다음과 같이 생각하십시오.

  • REST-디자인 패턴
  • OData-기술 활성화

20

2012 년 OData는 표준화를 마쳤으므로 여기에 업데이트를 추가하겠습니다.

먼저 정의 :

REST -HTTP를 통해 메시지를 보내는 방법의 아키텍처입니다.

OData V4 -REST의 특정 구현이며 실제로 메시지의 내용을 다른 형식으로 정의합니다 (현재 AtomPub 및 JSON이라고 생각합니다). ODataV4는 나머지 원칙을 따릅니다.

예를 들어, asp.net 사용자는 주로 WebApi 컨트롤러를 사용하여 객체를 JSON으로 직렬화 / 직렬화하고 자바 스크립트로 무언가를 수행하게됩니다. Odata는 즉시 사용 가능한 옵션으로 URL에서 직접 쿼리 할 수 ​​있습니다.


10

OData 문서에서 :

OData 프로토콜은 RESTful 웹 서비스를 통해 데이터와 상호 작용하기위한 응용 프로그램 수준 프로토콜입니다.

...

OData 프로토콜은 데이터와 데이터 모델을 모두 설명하는 균일 한 방법을 제공한다는 점에서 다른 REST 기반 웹 서비스 접근 방식과 다릅니다.


4

OData (Open Data Protocol)는 RESTful API 빌드 및 소비에 대한 모범 사례를 정의하는 OASIS 표준입니다. OData를 사용하면 요청 및 응답 헤더, 상태 코드, HTTP 메소드, URL 규칙, 미디어 유형, 페이로드 형식 및 쿼리 옵션 등을 정의하는 방법에 대해 걱정할 필요없이 RESTful API를 구축하면서 비즈니스 로직에 집중할 수 있습니다. 변경 사항 추적, 재사용 가능한 프로 시저에 대한 기능 / 조치 정의 및 비동기 / 배치 요청 전송 등. 또한 OData는 RESTful API의 사용자 정의 요구를 충족시키기위한 확장 기능을 제공합니다.

OData RESTful API는 사용하기 쉽습니다. API의 데이터 모델에 대한 기계 판독 가능 설명 인 OData 메타 데이터를 사용하면 강력한 일반 클라이언트 프록시 및 도구를 작성할 수 있습니다. 그들 중 일부는 프로토콜에 대해 전혀 몰라도 OData와 상호 작용하는 데 도움이 될 수 있습니다. 다음 6 단계는 서로 다른 프로그래밍 플랫폼에서 6 가지 흥미로운 OData 소비 시나리오를 보여줍니다. 그러나 개발자가 아니고 단순히 OData를 가지고 놀고 싶다면 XOData가 최선의 시작입니다.

자세한 내용은 http://www.odata.org/참조하십시오.


4

ODATA 는 URL에서 균일하게 데이터쿼리 할 수 있는 특별한 종류의 REST 입니다.


2

REST 는 리소스 기반 아키텍처 스타일 인 RE 프레젠테이션 S tate T ransfer를 나타냅니다 . 리소스 기반이란 데이터 및 기능이 리소스로 간주됨을 의미합니다.

OData 는 RESTful 웹 서비스를 구축하고 사용하기위한 모범 사례를 정의하는 웹 기반 프로토콜입니다. OData는 RESTful 웹 서비스를 작성하여 REST를 구현하는 방법입니다.

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