OData를 그렇게 특별하게 만드는 것은 무엇입니까?
OData는 REST API의 한 형태이지만 REST API가 하지 않는 특정 기능을 표준화했습니다. 우선, OData는 요청 자체에 대한 쿼리 및 필터링을 지원합니다. 또한 OData는 앱의 데이터가 구현되면 변경 사항에 대한 기능적 감사 추적을 생성합니다. OData를 한 문장으로 요약하려고 할 때: OData는 REST API를 구축하기 위한 모범 사례이므로 REST의 기능을 더 잘 활용할 수 있습니다.
아래는 OData.org 공식 웹페이지에서 발췌한 내용으로, 해당 웹페이지에서 OData가 무엇인지 직접 설명하고 있습니다.
“OData(Open Data Protocol)는 ISO/IEC 승인, OASIS 표준 RESTful API를 빌드하고 사용하기 위한 모범 사례 세트를 정의합니다. OData는 요청 및 응답 헤더, 상태 코드, HTTP 메서드, URL 규칙, 미디어 유형, 페이로드 형식, 쿼리 옵션 등을 정의하는 다양한 접근 방식에 대해 걱정할 필요 없이 RESTful API를 빌드하는 동안 비즈니스 로직에 집중할 수 있도록 도와줍니다. OData는 또한 변경 사항 추적, 재사용 가능한 프로시저에 대한 함수/작업 정의, 비동기/배치 요청 전송에 대한 지침을 제공합니다.” — 오데이터.org
OData 데이터 세트는 Microsoft Excel 및 Power BI와 같은 다른 도구에서도 사용할 수 있습니다. Mendix 지원 OData 버전 3Atom XML 형식으로 데이터를 반환하는 OData 버전 4클라이언트가 요청한 형식에 따라 JSON 및 XML 형식으로 데이터를 반환합니다.
OData를 어떻게 사용합니까? Mendix?
In Mendix Studio Pro에서는 OData API를 만드는 것이 비교적 쉽습니다. 일반적인 REST 서비스와 마찬가지로 Studio Pro는 도메인 모델에서 직접 API를 생성하는 옵션도 제공합니다.
OData 서비스를 만든 후에는 앱을 클라우드 환경에 배포하기만 하면 Datahub에 게시할 수 있습니다. Datahub는 기본적으로 Open Metadata 카탈로그로, 즉 데이터를 여러 사용자 간에 공유할 수 있습니다. Mendix Datahub에 OData 서비스를 등록하면 앱이 됩니다. 또한 API 자체를 발견하고 이해하는 데도 도움이 됩니다.
하지만 OData를 사용하려면 Datahub를 사용할 필요는 없습니다. MendixAPI 자체의 $metadata 계약을 다운로드하여 수동으로 수행할 수도 있습니다.
그러나 Datahub에 등록한 후에는 다른 곳에서 데이터를 통합합니다. Mendix 앱은 원격 엔터티(Datahub에 등록된 OData 서비스)를 도메인 모델로 끌어서 놓는 것만큼 간단합니다.
또한 이 글을 쓰는 시점에서, Mendix 방금 OData 사용에 대한 놀라운 새로운 개선 사항이 포함된 Studio Pro 9.17.0이 출시되었습니다. Mendix, 아래는 9.17.0 릴리스 노트에서 발췌한 내용:
Studio Pro에서 OData 기능을 확장하여 다음을 수행할 수 있습니다. OData로 서비스, API 및 데이터베이스를 래핑합니다. 그리고 더 쉽게 만들어줍니다 커넥터를 빌드하다 외부 데이터에 액세스하는 OData 서비스는 그런 다음 쉽게 발견되어 사용될 수 있습니다. 데이터 허브 카탈로그. 새로운 기능에는 [비지속성 엔터티를 OData 리소스로 게시](](하는 기능이 포함됩니다.https://docs.mendix.com/refguide/wrap-services-odata/#npe-published-odata), 그리고 마이크로플로를 사용하여 리소스를 검색하고 저장하는 방법을 정의합니다.. 또한 우리는 제공합니다 오픈API 쉽게 계약하다 게시된 OData 리소스 테스트.
API 문서에 접근하기
OData의 매우 강력한 기능 Mendix 앱이 로컬에 배포되거나 실행되면 게시된 OData 서비스에 대한 API 문서에 액세스할 수 있습니다. 앱의 기본 URL + '/오데이터-문서/'.
예를 들어, 포트 8080에서 실행되는 로컬 앱의 문서 위치는 다음과 같습니다.
https://localhost:8080/odata-doc/
OData의 경우, OData $metadata 계약과 OpenAPI 계약은 모두 여기에서 사용할 수 있습니다. OpenAPI 페이지를 사용하여 API에 대한 OData 호출을 테스트할 수도 있습니다.
실제에서의 OData
다음 섹션에서는 OData API를 게시하는 방법에 대한 실용적인 가이드를 제공합니다. Mendix 앱에서 해당 서비스를 Datahub에 등록한 다음 다른 원격 엔터티에서 데이터를 사용합니다. Mendix 응용 프로그램.
시나리오 :
당신이 전자상거래를 만들었다고 상상해보세요 Mendix 앱. 앱에서 주문을 완료하고 고객에게 배송하기 위해 창고 직원에게 전달되는 주문이 포함된 엔터티가 있습니다. 근로자가 창고에 재고를 넣을 때 각 제품이 보관된 위치를 엑셀 시트에 카탈로그화합니다. 현재 창고는 엑셀 시트에서 주문을 인쇄하고 자체 엑셀 문서에서 항목이 보관된 위치를 찾는데, 이는 비효율적이고 전체 프로세스를 느리게 합니다.
기존 앱에는 민감한 고객 정보가 포함되어 있으므로 외부 창고 직원에게 이를 노출하고 싶지 않습니다. 작업자가 주문과 이를 완료하는 데 필요한 품목을 볼 수 있는 별도의 앱을 만들고 OData를 사용하여 정보를 공유하기로 결정했습니다. Mendix 데이터허브.
도메인 모델에서 OData API 생성
저희의 전자상거래 앱에서는 도메인 모델에 $Order와 $Orderline이라는 엔터티가 있는데, 이들은 일대다 연결을 가지고 있습니다.

엔티티(우리의 경우 $Orders)를 마우스 오른쪽 버튼으로 클릭하면 'OData 리소스로 노출' 옵션이 제공됩니다.

여기를 클릭하면 프로젝트에서 새 API를 만들 위치와 리소스 이름을 입력하라는 메시지가 표시됩니다.

그런 다음 자동으로 생성된 리소스를 보고 속성을 편집합니다. 창고 직원만 주문 정보를 볼 수 있도록 하고, 주문 세부 정보를 편집할 수 없도록 해야 하므로 그대로 둘 수 있습니다.
우리는 이러한 기능을 활용하지 않지만 Datahub가 더 이상 읽기 전용이 아니라는 점을 지적해야 한다고 생각합니다. 이제 데이터를 읽는 것 외에도 새로운 레코드를 삽입하고 업데이트하고 삭제할 수 있습니다.

그런 다음 리소스에 $Orderline 엔터티를 추가할 수 있습니다. 이를 위해 엔터티 아래에서 추가 버튼을 클릭하고 $orderline을 찾은 다음 확인을 클릭합니다.

우리가 S를 하면tudio Pro는 이러한 엔터티가 관련되어 있음을 인식하고 이들 간의 연결을 게시할지 묻습니다., 예를 클릭합니다.

그러면 콘솔에 다음과 같은 오류가 표시됩니다.

$Itemname과 $OrderNumber는 API의 키로 사용되므로 비워둘 수 없도록 해야 합니다.

그리고 도메인 모델에서 할 수 있는 $ItemName에 고유성 검증 규칙을 추가해야 합니다.

Datahub에 OData 리소스 게시
이 부분은 정말 쉽습니다. 앱을 클라우드 환경에 배포하기만 하면 됩니다! 무료 클라우드부터 다른 호스팅 솔루션까지 누구나 작업할 수 있습니다. Mendix 제공합니다.
OData API를 배포하는 모든 경우 Mendix 클라우드는 자동으로 등록됩니다. 즉, API도 자동으로 업데이트됩니다. 이를 통해 설명서가 항상 최신 상태이며 연결하려는 환경과 항상 관련이 있습니다. 카탈로그는 API에서 의미적 버전 관리를 사용할 수 있는 기능을 제공하므로 테스트 대 승인 대 프로덕션에서 실행 중인 버전을 보여줍니다.
앱을 실행하지 않는 경우 Mendix 클라우드에서 Catalog API를 사용하여 배포를 자체 CICD 프로세스에 자동으로 등록할 수 있습니다. 또는 Data Hub 카탈로그에서 수동으로 등록할 수 있습니다.
이 예에서는 다음에만 배포합니다. Mendix 무료 클라우드. 앱이 배포되면 다음에서 이메일을 받게 됩니다. Mendix Datahub에서 새 OData 리소스가 카탈로그에 자동으로 등록되었음을 알려줍니다.

Datahub에서 외부 엔터티 사용
우리의 새로운 앱(창고 근로자용 앱)에는 Product라는 테이블이 있습니다.

이 모듈에서 Datahub에 게시한 $Order 및 $Orderline 엔터티를 포함하려고 합니다.
도메인 모델에 있는 동안 오른쪽에 있는 Datahub 창으로 이동하여 등록된 서비스의 이름을 검색합니다(무료 클라우드에 배포한 경우 필터에서 개발 환경을 활성화해야 함)

서비스를 찾았으면 두 엔터티를 새 앱의 도메인 모델로 끌어다 놓기만 하면 Studio Pro가 나머지 작업을 처리합니다.

이제 앱에서 원하는 대로 $order 및 $orderline 데이터를 자유롭게 사용할 수 있습니다! 잘하셨습니다!
고려해야 할 몇 가지 사항
앱의 정보에 누가 접근할 수 있는지 기억하는 것이 중요합니다. 모든 애플리케이션에서 원격 엔터티를 사용할 때는 앱의 보안을 확인하세요.