JSON이있을 때 Odata의 필요성은 무엇입니까?


23

Odata의 요점과 이해해야 할 시점을 이해하려고합니다. 현재 작업 방식은 ASP.NET 및 MVC / WebApi 컨트롤러를 사용하여 객체를 JSON으로 직렬화 / 직렬화 해제하고 자바 스크립트로 무언가를 수행하는 것입니다.

내가 OData의 이점을 알 수있는 것은 URL에서 직접 쿼리 할 수 ​​있다는 것입니다 ...하지만 클라이언트 및 서버 코드를 작성하기 때문에 그럴 필요가 없습니다.

누구나 자바 스크립트에서 ODaya 쿼리의 결과를 구문 분석하겠습니까?

어쩌면 OData는 모든 클라이언트가 JSON이 제공하지 않는 쿼리에서 자세한 정보를 얻을 수 있도록 일반 엔드 포인트를 제공하는 것에 관한 것일까 요? 따라서 데이터 공급자라면 odata가 무엇이라고 생각합니까?

REST / JSON / ODATA의 목적과 사용을 이해하도록 도와주세요.


2
"보다 쉽게"만들려면 링크 된 데이터 , 링크 된 데이터 플랫폼 , SPARQL데이터 카탈로그 어휘에 관심이있을 수 있습니다 . 이들 모두는 서로 다른 목적으로 사용되며 JSON 과 결합 될 수있는 서로 다른 것입니다 ( 예 : SPARQL 1.1 쿼리 결과 JSON 형식 ) . 물론 REST 와도 같습니다 .
Trylks

답변:


42

JSON은 JavaScript 기반의 데이터 교환 형식입니다.

REST는 아키텍처 스타일 인 반면 OData는 데이터를 생성하고 소비하도록 설계된 REST의 특정 구현이며 AtomPub와 JSON의 두 가지 형식을 지원합니다.

따라서 일반 REST와 OData를 사용하는 JSON의 차이점은 데이터 조작을위한 OData의 옵션입니다. 예를 들어 OData 프로토콜을 사용하여 데이터를 쿼리하는 경우 URI에서 아래 옵션을 지정할 수 있습니다.

  • $ 주문
  • 최고
  • 건너 뛰기
  • $ 필터
  • $ 형식
  • $ select

프로젝션, 리소스 연결 등을 수행 할 수 있으며 이러한 모든 옵션을 즉시 사용할 수 있습니다. 이제 REST 서비스에서 이러한 모든 기능을 제공해야한다면

  • 그들 모두를 구현
  • 다양한 작업을위한 자체 컨벤션 / 키워드 생성

많은 작업 일뿐만 아니라 불일치가 발생하고 데이터 소비자를위한 학습 곡선을 만듭니다.


5

JSON 또는 JavaScript 객체 표기법은 단순히 데이터 형식 또는 표준입니다. 로그인 이름 또는 REST 서비스에서 사용해야하는 것과 같은 형식을 전송하기위한 합의 된 형식입니다.

이 부분을 참조하십시오 : http://en.wikipedia.org/wiki/JSON

원래는 JavaScript 스크립팅 언어에서 파생되었지만 JSON은 언어 독립적 인 데이터 형식이며 JSON 데이터를 구문 분석 및 생성하기위한 코드는 다양한 프로그래밍 언어로 쉽게 사용할 수 있습니다.

특정 프로그래밍 언어의 일부가 아니므로 다른 시스템이 JSON을 사용하고 있다고 알고 있으면 데이터를 쉽게 전달할 수 있습니다.

REST는 웹 서비스에 사용되는 단순한 아키텍처 스타일입니다.

이 부분을 참조하십시오 : http://en.wikipedia.org/wiki/Representational_state_transfer

이를 생각하는 한 가지 방법은 많은 다른 컴퓨터가 대화 할 수있는 웹 서비스를 작성하고 정보를 교환하려는 경우입니다. URL을 통해 데이터를 수락하도록 웹 서비스를 작성할 수 있습니다.

 http://www.myservice.com/specialRESTService?name=punkouter

응답은 데이터 수신을 알리는 JSON 객체 일 수 있습니다.

{
    "name": "punkouter",
    "status": "service downloaded your data",
}

OData에 대해 들어 본 적이 없으므로 Google에서 검색했습니다.

OData는 AtomPub 프로토콜과 JSON을 기반으로하며 Atom 구조는 각 OData 요청에서 반환 된 데이터를 포함하는 봉투입니다. OData 요청은 모든 요청에 ​​REST 모델을 사용합니다. 각 REST 명령은 명령의 세부 사항이 URL에있는 POST, GET, PUT, PATCH 또는 DELETE http 요청 (CRUD로 맵핑)입니다.

GET : 엔티티 콜렉션 (피드 문서) 또는 단일 엔티티 (입력 문서)를 가져옵니다.

POST : 입력 문서에서 새 엔터티를 만듭니다.

PUT : 입력 문서로 기존 엔티티를 업데이트합니다.

패치 : 부분 입력 문서로 기존 엔티티를 업데이트합니다.

삭제 : 엔터티를 제거합니다.

OData와 같은 소리는 바닐라 REST 스타일 아키텍처를 향상시키기 위해 작성된 것입니다. 그러나 C # 또는 사용중인 언어로 처음부터 물건을 쓰지 않고 추가 할 수있는 것처럼 보입니다.

OData를 사용하도록 노력하고 있다면 여전히 JSON ..을 사용하고 있지만 Microsoft 등이 작성한 OData 프레임 워크 / 표준 내에서.

누구나 자바 스크립트에서 OData (sic) 쿼리의 결과를 구문 분석하겠습니까?

예, JSON을 사용하고 있기 때문에 JS를 사용하는 것은 완벽합니다.

어쩌면 OData는 모든 클라이언트가 JSON이 제공하지 않는 쿼리에서 자세한 정보를 얻을 수 있도록 일반 엔드 포인트를 제공하는 것에 관한 것일까 요? 따라서 데이터 공급자라면 Odata가 무엇이라고 생각합니까?

Odata는 REST 서비스를 제공하고 있지만 일반 "일반적인"REST 서비스 엔드 포인트 위에 표준 서비스가 추가되어 있습니다. 응답이 JSON과 같은 합의 된 형식으로되어 있기 때문입니다. 그러나 귀하의 작업에는 OData를 사용하고 싶을 수도 있습니다.


작업은 신경 쓰지 않습니다. Odata의 목적이 무엇인지 알고 싶었습니다 .JSON은 데이터를 표현하는 방법 일뿐입니다 .. ODATA도 마찬가지입니다. REST를 사용하고 JSON을 반환하는 것만으로는 충분하지 않습니다. ODATA를 사용하는 것이 유리할까요?
punkouter

아니요, OData는 JSON을 사용하여 데이터를 나타내는 RESTful 서비스 아키텍처입니다. 여러분은 하나로, OData 라이브러리 / 표준을 사용하여 아무것도 얻을 수 없을 것 .. 기술적으로 직접 쓸 수 없습니다 ..하지만 중 하나로, OData를 사용하면 시간을 절약 할 수있는 건 없어요 것을 직접 작성 반대로 그것으로 당신이있는 거 건물 것들 ..
에릭

json? 그러나 OData는 XML을 반환합니다. 아니면 둘 다입니까? 혼란 스러워요.
punkouter


"OData는 XML 기반 Atom 형식과 JSON 형식 인 두 가지 형식 (노출, 항목, 링크 등)을 나타내는 두 가지 형식을 지원합니다.
Erik

2

"이유"질문에 대해서는 책 RESTful Web API 에 정말 좋은 정의가 있습니다. 본질적으로 OData는 콜렉션 패턴을 구현합니다. 여기서 콜렉션은 링크를 통해 자원 목록을 제공하는 자원입니다.


2

OData는 인터페이스 표준을 갖춘 RESTful 서비스의 특정 구현입니다. 제품의 API를 공개 할 때 OData 표준을 준수한다고 말하면 OData에 이미 익숙한 사용자는 API 문서를 읽는 데 많은 시간을 소비하지 않고도 쉽게 사용할 수 있기 때문에 이점이 있습니다.

단점 : OData는 기본 데이터베이스를 노출하는 데 탁월하지만이 사양에는 트랜잭션에 대한 지원이 포함되어 있지 않으며, DB 인터페이스와 트랜잭션 인터페이스 모두를 제공하는 RESTful 서비스를 제공 할 수있는 응용 프로그램에서는 사용할 수 없습니다.

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