2016-06-29 5 views
2

oData 4.0에서 작업 및 기능이 자주 참조됩니다. 나는 그들과 그들이 어떻게 다른지를 알 수 없었다. 함수가 다른 프로그래밍 언어 나 다른 것과 동일한 기능을합니까? 액션이란 무엇입니까? 그리고 둘 다 어떻게 다른지. 당신의 도움을 주셔서 감사합니다.oData v4 기능 및 동작은 무엇입니까?

답변

0

OData.org의 스펙에서 볼 때, 이는 조작이며, 차이점은 부작용이 있는지 여부입니다. WebAPI/중 하나로, OData의 구현에서

당신이 여기에 문서를 참조 할 수 있습니다 :

작업 : :

[HttpPost] 
public IHttpActionResult PrimitiveAction(ODataActionParameters parameters) 

http://odata.github.io/WebApi/#04-06-function-parameter-support

http://odata.github.io/WebApi/#04-07-action-parameter-support

당신이 서명이 분명하다 볼 수 있습니다

Functio N :

[HttpGet] 
public string ComplexFunction([FromODataUri]Address c1, [FromODataUri]IEnumerable<Address> c2) 
+1

부작용 여부 부작용이 무엇인지 설명해 주시겠습니까? – user576510

2

짧은 설명은 Spec에서 복사 :

Actions가 호출 할 때 부작용이있을 수있는 하나로, OData 서비스에 의해 노출되는 작업입니다. 액션은 데이터를 반환 할 수 있지만 추가 경로 세그먼트로 더 이상 구성하지 않아야합니다 (MUST NOT).

Functions은 데이터를 반환해야하며 관찰 가능한 부작용이 없어야하는 OData 서비스에 의해 노출 된 작업입니다.
중 하나로, OData의 URL의 각 별도의 부분

경로 세그먼트는 경로 세그먼트입니다. URI /Products(1)/Supplier에는 세 개의 경로 세그먼트가 있습니다.

  • 엔티티 세트 - 키 Products
  • -1
  • 탐색 - Supplier
+0

"추가 경로 세그먼트로 더 이상 구성하지 않아야 함"이란 의미는 무엇입니까? – user576510

+0

내 awnser 편집 –

+0

"부작용"은 무엇입니까? 좋은 예가 될 것입니다. –

5

작업는 - 엔티티에 CRUD 작업을 수행하는 데 사용할 수 있습니다. 즉, 기본 작업 (POST/PUT/DELETE)이 요구 사항을 지원하지 않는 경우 사용자 지정 작업을 사용하여 엔터티를 만들고 업데이트하고 삭제할 수 있습니다. 또한 사용자 정의 액션을 사용하여 복잡한 유형의 여러 엔티티에서 데이터를 가져올 수 있습니다. 액션은 SELECT 및 DML 쿼리를 허용하는 SQL의 저장 프로 시저와 유사합니다.

기능 - 이상적으로는 데이터를 수정하는 것이 아니라 데이터를 가져 오는 기능을 사용해야합니다. 이것은 SELECT 쿼리 만 허용하는 SQL의 함수와 유사합니다.