Поддержка стандарта OData в ODataDB
ODataDB поддерживает большинство возможностей версии OData 4.01.
См. последние спецификации стандарта OData по следующим ссылкам:
- https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html
- https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html
- https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part3-csdl.html
В таблице ниже приведен статус поддержки спецификации (на английском языке):
OData Minimal Conformance Level | |
---|---|
1. MUST publish a service document at the service root (section 11.1.1) | ✓ |
2. MUST return data according to at least one of the OData defined formats (section 7) | ✓ |
3. MUST support server-driven paging when returning partial results (section 11.2.5.7) | ✓ |
4. MUST return the appropriate OData-Version header (section 8.1.5) | ✓ |
5. MUST conform to the semantics the following headers, or fail the request | ✓ |
5.1. Accept (section 8.2.1) | ✓ |
5.2. OData-MaxVersion (section 8.2.7) | ✓ |
6. MUST follow OData guidelines for extensibility (section 6 and all subsections) | ✓ |
7. MUST successfully parse the request according to [OData-ABNF] for any supported system query string options and either follow the specification or return 501 Not Implemented (section 9.3.1) for any unsupported functionality (section 11.2.1) | ✓ |
8. MUST expose only data types defined in [OData-CSDL] | ✓ |
9. MUST NOT require clients to understand any metadata or instance annotations (section 6.4), custom headers (section 6.5), or custom content (section 6.2) in the payload in order to correctly consume the service | ✓ |
10. MUST NOT violate any OData update semantics (section 11.4 and all subsections) | ✓ |
11. MUST NOT violate any other OData-defined semantics | ✓ |
12. SHOULD support $expand (section 11.2.4.2) | ✓ |
13. MAY publish metadata at $metadata according to [OData-CSDL] (section 11.1.2) | ✓ |
Updatable OData Service | |
14. MUST include edit links (explicitly or implicitly) for all updatable or deletable resources according to [OData-Atom] and [OData-JSON] | ✓ |
15. MUST support POST of new entities to insertable entity sets (section 11.4.1.5 and 11.4.2.1) | ✓ |
16. MUST support POST of new related entities to updatable navigation properties (section 11.4.6.1) | x |
17. MUST support POST to $ref to add an existing entity to an updatable related collection (section 11.4.6.1) | x |
18. MUST support PUT to $ref to set an existing single updatable related entity (section 11.4.6.3) | x |
19. MUST support PATCH to all edit URLs for updatable resources (section 11.4.3) | ✓ |
20. MUST support DELETE to all edit URLs for deletable resources (section 11.4.5) | ✓ |
21. MUST support DELETE to $ref to remove an entity from an updatable navigation property (section 11.4.6.2) | x |
22. MUST support if-match header in update/delete of any resources returned with an ETag (section 11.4.1.1) | x |
23. MUST return a Location header with the edit URL or read URL of a created resource (section 11.4.1.5) | ✓ |
24. MUST include the OData-EntityId header in response to any POST/PATCH that returns 204 No Content (Section 8.3.3) | ✓ |
25. MUST support Upserts (section 11.4.4) | ✓ |
26. SHOULD support PUT and PATCH to an individual primitive (section 11.4.9.1) or complex (section 11.4.9.3) property (respectively) | x |
27. SHOULD support DELETE to set an individual property to null (section 11.4.9.2) | x |
28. SHOULD support deep inserts (section 11.4.2.2) | x |
OData Intermediate Conformance Level | |
1. MUST conform to the OData Minimal Conformance Level | x |
2. MUST successfully parse the [OData-ABNF] and either follow the specification or return 501 Not Implemented for any unsupported functionality (section 9.3.1) | ✓ |
3. MUST support $select (section11.2.4.1) | ✓ |
4. MUST support casting to a derived type according to [OData URL] if derived types are present in the model | x |
5. MUST support $top (section 11.2.5.3) | ✓ |
6. MUST support /$value on media entities (section 4.10. in [OData URL]) and individual properties (section 11.2.3.1) | ✓ |
7. MUST support $filter (section 11.2.5.1) | ✓ |
7.1. MUST support eq, ne filter operations on properties of entities in the requested entity set (section 11.2.5.1.1) | ✓ |
7.2. MUST support aliases in $filter expressions (section 11.2.5.1.3) | ✓ |
7.3. SHOULD support additional filter operations (section 11.2.5.1.1) and MUST return 501 Not Implemented for any unsupported filter operations (section 9.3.1) | ✓ |
7.4. SHOULD support the canonical functions (section 11.2.5.1.2) and MUST return 501 Not Implemented for any unsupported canonical functions (section 9.3.1) | ✓ |
7.5. SHOULD support $filter on expanded entities (section 11.2.4.2.1) | ✓ |
8. SHOULD publish metadata at $metadata according to [OData-CSDL] (section 11.1.2) | ✓ |
9. SHOULD support the [OData-JSON] format | ✓ |
10. SHOULD consider supporting basic authentication as specified in [RFC2617] over HTTPS for the highest level of interoperability with generic clients | ✓ |
11. SHOULD support the $search system query option (section 11.2.5.6) | ✓ |
12. SHOULD support the $skip system query option (section 11.2.5.4) | ✓ |
13. SHOULD support the $count system query option (section 11.2.5.5) | ✓ |
14. SHOULD support $expand (section 11.2.4.2) | ✓ |
15. SHOULD support the lambda operators any and all on navigation- and collection-valued properties (section 5.1.1.5 in [OData URL]) | x |
16. SHOULD support the /$count segment on navigation and collection properties (section 11.2.9) | ✓ |
17. SHOULD support $orderby asc and desc on individual properties (section 11.2.5.2) | ✓ |
OData Advanced Conformance Level | |
1. MUST conform to at least the OData Intermediate Conformance Level | x |
2. MUST publish metadata at $metadata according to [OData-CSDL] (section 11.1.2) | ✓ |
3. MUST support the [OData-JSON] format | ✓ |
4. MUST support the /$count segment on navigation and collection properties (section 11.2.9) | ✓ |
5. MUST support the lambda operators any and all on navigation- and collection-valued properties (section 5.1.1.5 in [OData URL]) | x |
6. MUST support the $skip system query option (section 11.2.5.4) | ✓ |
7. MUST support the $count system query option (section 11.2.5.5) | ✓ |
8. MUST support $orderby asc and desc on individual properties (section 11.2.5.2) | ✓ |
9. MUST support $expand (section 11.2.4.2) | ✓ |
9.1. MUST support returning references for expanded properties (section 11.2.4.2) | x |
9.2. MUST support $filter on expanded entities (section 11.2.4.2.1) | ✓ |
9.3. MUST support cast segment in expand with derived types (section 11.2.4.2.1) | x |
9.4. SHOULD support $orderby asc and desc on individual properties (section 11.2.4.2.1) | x |
9.5. SHOULD support the $count system query option for expanded properties (section 11.2.4.2.1) | ✓ |
9.6. SHOULD support $top and $skip on expanded properties (section 11.2.4.2.1) | x |
9.7. SHOULD support $search on expanded properties (section 11.2.4.2.1) | x |
9.8. SHOULD support $levels for recursive expand (section 11.2.4.2.1.1) | x |
10. MUST support the $search system query option (section 11.2.5.6) | x |
11. MUST support batch requests (section11.7 and all subsections) | ✓ |
12. MUST support the resource path conventions defined in [OData URL] | x |
13. SHOULD support Asynchronous operations (section 8.2.8.8) | x |
14. SHOULD support Delta change tracking (section 8.2.8.6) | x |
15. SHOULD support cross-join queries defined in [OData URL] | x |
16. SHOULD support a conforming OData service interface over metadata (section 11.1.3) | x |