共用方式為


用於定址資源的 URI 格式 (ADO.NET 資料服務架構)

所有可在 ADO.NET 資料服務中存取的實體都可由 URI 定址。ADO.NET 資料服務 URI 會符合泛型 URI 文法並且使用超文字傳輸協定 (Hypertext Transfer Protocol,HTTP)。ADO.NET 資料服務 URI 是由三個區段所組成:服務根目錄、資源路徑和查詢選項,而這三個區段構成用於定址 ADO.NET 資料服務中任何資源的 URI。

服務根目錄

URI 的服務根目錄區段代表 ADO.NET 資料服務的根目錄位置。與 ADO.NET 資料服務根目錄相關聯的資源會描述服務的所有 EntitySetAssociationSet 和 (或) 服務作業。僅包含配置和服務名稱項目的有效 URI 為:

  • https://www.contoso.com

  • http://::1:8080/myservice.svc

  • https://www.contoso.com/path/myservice.svc/

資源路徑

URI 的資源路徑項目會指定實體集、實體類型、導覽屬性、導覽連結、屬性、複雜類型和服務作業名稱如何組合,以便產生在 ADO.NET 資料服務中識別資源的 URI。

URI 的資源路徑項目允許篩選和周遊資料服務中實體的圖形。這個區段不包含任何可變更指定之 URI 的要求回應格式的建構。如需變更回應格式的詳細資訊,請參閱ADO.NET 資料服務查詢選項

包含配置、服務根目錄和資源路徑項目的有效 URI 為:

  • https://www.contoso.com/myservice.svc/Customers

  • https://www.contoso.com/Customers(123)

  • https://www.contoso.com/Customers(123)/Orders

  • https://www.contoso.com/Customers(123)/$links/Orders

  • https://www.contoso.com/Products(ID=’ABC’)/Category

  • https://www.contoso.com/Teams(Conference=’ACC’, League=’NCCC’)/Roster

如需資源路徑語法的詳細資訊,請參閱資源路徑規則和語意 (ADO.NET 資料服務架構)

查詢選項

URI 的查詢選項區段會指定兩種資訊:系統查詢選項和服務作業參數。查詢選項會符合下列規則:

  • 您可以在單一 URI 查詢字串中指定任何數目的支援查詢選項。

  • 每個查詢選項都可以存在查詢字串中,與任何其他選項是否存在無關。

  • 查詢選項在 URI 內部的順序不重要。

  • 查詢選項名稱會區分大小寫。

  • 查詢選項值會區分大小寫。

  • 在要求 URI 的查詢字串中,特定系統查詢選項只能出現一次。

如需查詢語意 (Semantics) 的詳細資訊,請參閱ADO.NET 資料服務查詢選項ADO.NET 資料服務系統查詢選項

範例

下列 URI 是 ADO.NET 資料服務語法的範例。每個 URI 都包含服務如何剖析它們的描述。

從資料來源的所有 Orders 中,僅傳回 ID 屬性等於 201 的 Orders

http://host/service.svc/Orders?$filter=ID%20eq%201

比對所有屬性值 fullname 等於 'Jones, David' 的 Customers

http://host/service.svc/Customers?$filter=
         'Jones, David' eq insert(fullname, length(lastname), ',')

此算術運算式會剖析成 1 + (2 * 3),而非 (1 + 2) * 3。此篩選運算式只是一律評估為 true 的測試案例,所以該 URI 代表所有 OrderLines 的要求。

http://host/service.svc/OrderLines?$filter=1 add 2 mul 3 lt 10

抽象語法

下列規則將顯示依照<RFC 4234>(英文) 中定義的擴充巴克斯格式 (Augmented Backus-Naur Form) 規格來建構 ADO.NET 資料服務 URI 的語法項目。ADO.NET 資料服務 URI 是由三個區段所組成:服務根目錄、資源路徑和查詢選項,而這三個區段組合之後便構成用於定址 ADO.NET 資料服務中任何資源的 URI。

ADO.NET_DS_URI   = "http://" serviceRoot [ resourcePath ["?" queryOptions ] ] 

ServiceRoot      = host [ ":" port ] [*( "/" segment-nz )]

ResourcePath     = "/" EntitySet | serviceOperation [ navPath ]  

navPath          = ("("keyPredicate")" [ navPath_np / propertyPath / propertyPath_ct ] )

navPath_np       = "/" ("$links" / NavigationProperty) /
                     (NavigationProperty [ navPath ])

EntityPropertyPath     = "/" EntityProperty [ "/$value" ] 

ComplexTypePropertyPath_ct  = 1*("/" ComplexType) [ propertyPath ] 
  
keyPredicate     = keyPredicate_single | keyPredicate_cmplx

keyPredicate_single  = 1*DIGIT | ("’" 1*unreserved "’") | 1*(HEXDIGHEXDIG)) | 
                       keyPredicate_complex
                       //NOTE: strings, GUIDs and dates are quoted

keyPredicate_cmplx   = resourceProp "=" keyPredicate [“,” keyPredicate_cmplx]

queryOptions     = sysQueryOperation / serviceOpParamName 
                     *("&" sysQueryOperation / serviceOpParam)

DIGIT            = as defined in RFC 3986 (0-9)
Host             = as defined in RFC 3986
Port             = as defined in RFC 3986
segment-nz       = as defined in RFC 3986 (A non empty sequence of chars outside set of URI reserved characters.)
pchar            = as defined in RFC 3986 (A non empty sequence of chars outside set of URI reserved characters.)

serviceOperation = the name of a service operation. 

EntitySet      = the name of an EntitySet. Allowed characters match the set of allowed characters for EntitySet names in the EDM specification.

EntityType = The name of an EntityType within the EntitySet referenced in the prior path segment. Allowed characters match the set of allowed characters for EntityType names in the EDM specification.

Property     = The name of a property on the entity type or complex type in the prior path segment or current path segment if filtering by key. Allowed characters match the set of allowed characters for EntityType property names in the EDM specification.  

NavigationProperty = the name of a NavigationProperty or Navigation Link on the EntityType in the prior path segment. If the prior segment is an EntitySet,this property must be on the type within the given set. Allowed characters match the set of allowed characters for NavigationProperty names in the EDM specification.

systemQueryOperation = "$" query "=" query 

serviceOperationParam    = query "=" query  

如需 URI 語法的詳細資訊和範例,請參閱資源路徑規則和語意 (ADO.NET 資料服務架構)

另請參閱

概念

資源路徑規則和語意 (ADO.NET 資料服務架構)
ADO.NET 資料服務查詢選項
ADO.NET 資料服務系統查詢選項