OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

odata message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: [OASIS Issue Tracker] (ODATA-799) Define Key-As-Segment URL convention for resource paths


     [ https://issues.oasis-open.org/browse/ODATA-799?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Pizzo updated ODATA-799:
--------------------------------

    Proposal: 
Key-as-Segment uses the (primary) key of an entity type. The number and sequence of <PropertyRef> elements within the <Key> defines the number and sequence of path segments that have to be attached to the path of the collection to identify an item in a collection.
Primitive types are represented in path key segments without "single quote decoration" or "double single quotes within" and use standard percent-encoding to map them into the lexical space of URL path segments.

4.01 Services that support key-as-segment syntax (for single-part keys only) should support the following precedence rules:

Following an entity collection segment: 
i.	Try to match an OData segment (starting with “$”)
ii.	Try to match an alias-qualified bound action name, bound function overload, or type name
iii.	Try to match a namespace-qualified bound action name, bound function overload, or type name
iv.	Try to match an unqualified bound action name, bound function overload, or type name in a default namespace
v.	Treat as a key

Notes:
1. For maximum interoperability, services SHOULD also support parens format, to avoid ambiguity, and to support multi-part keys. Note that, if they do not support the parens format, they must include the @odata.id, @odata.editlink, or @odata.readlink, as appropriate.
2. The syntax of ContextUrl always uses parens syntax
3. Forward slashes in key values must be percent-encoded  
4. Single quotes within key values do not need to be percent-encoded

Example 3 with key-as-segment syntax and current syntax
single quote can be literal within string or percent-encoded and isn't doubled (using ~/ as a shortcut for the service root)
~/People/O'Neil
~/People/O%27Neil

~/People('O''Neil')
~/People(%27O%27%27Neil%27) 
~/People%28%27O%27%27Neil%27%29

Forward-slash within string must be percent-encoded just as in paren syntax
~/Categories/Smartphone%2FTablet
~/Categories('Smartphone%2FTablet')



  was:
Key-as-Segment uses the (primary) key of an entity type. The number and sequence of <PropertyRef> elements within the <Key> defines the number and sequence of path segments that have to be attached to the path of the collection to identify an item in a collection.
Primitive types are represented in path key segments without "single quote decoration" or "double single quotes within" and use standard percent-encoding to map them into the lexical space of URL path segments.

Example 3 with key-as-segment syntax and current syntax
single quote can be literal within string or percent-encoded and isn't doubled (using ~/ as a shortcut for the service root)
~/People/O'Neil
~/People/O%27Neil

~/People('O''Neil')
~/People(%27O%27%27Neil%27) 
~/People%28%27O%27%27Neil%27%29

Forward-slash within string must be percent-encoded just as in paren syntax
~/Categories/Smartphone%2FTablet
~/Categories('Smartphone%2FTablet')




> Define Key-As-Segment URL convention for resource paths
> -------------------------------------------------------
>
>                 Key: ODATA-799
>                 URL: https://issues.oasis-open.org/browse/ODATA-799
>             Project: OASIS Open Data Protocol (OData) TC
>          Issue Type: Improvement
>          Components: OData URL Conventions
>    Affects Versions: V4.0_ERRATA02
>         Environment: Simplified Syntax;[Proposed]
>            Reporter: Ralf Handl
>            Assignee: Michael Pizzo
>              Labels: AdoptionBlocker
>             Fix For: V4.01_WD01
>
>
> Typical web APIs use path segments for key access to collection elements:
> ~/Users
> ~/Users/42
> Specify how such a URL convention would look like, considering
> - multi-part keys
> - the Edm primitive type system
> - bound actions/functions on entity-set level
> - context URLs for contained entities which include the key
> - relative context URLs
> Consider notation that allows context URLs to be relative to the service root.



--
This message was sent by Atlassian JIRA
(v6.2.2#6258)


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]