【问题标题】:Expand and Filter OData展开和过滤 OData
【发布时间】:2018-01-26 15:20:04
【问题描述】:

我正在尝试构建一个 GET 请求以仅提取特定数据,但我在使用 OData 时遇到了问题。 从 API 中提取的对象如下所示:

    {
    "PostalCode": "48103",
    "FranchiseId": 397,
    "Franchise": {
        "ConceptId": 1,
        "CreatedDateTime": "2015-10-20T18:36:46.353",
        "ModifiedDateTime": "2018-01-26T14:35:33.447",
        "DeletedDateTime": null,
        "DoingBusinessAs": "Appliance.inc",
        "Status": "Active",
        "IsOwned": true,
        "FranchiseeName": "Appliance Inc - Ann Arbor, MI - MLY 1001",
        "LicenseNumber": "ML89023",
        "City": "Ann Arbor",
        "StateAbbr": "MI",
        "PostalCode": "48104",
        "ContactFirstName": "Doug",
        "ContactLastName": "Smith",
        "Country": "United States"
    }
},

我正在执行此 GET 请求以获取该数据:

#url#&$expand=Franchise&$select=FranchiseId, PostalCode

我使用 &$expand=Franchise 只是因为我需要 Franchise 对象中的“FranchiseeName”,但我不想提取该对象的其余数据。 如何编写请求,所以我只提取三个字段:PostalCode、FranchiseId、FranchiseeName。该对象应如下所示:

{
"PostalCode": "48103",
"FranchiseId": 397,
"FranchiseeName": "Appliance.inc"
}

【问题讨论】:

    标签: odata


    【解决方案1】:

    我假设 #url# 是您实体的 OData URI 的占位符,例如http://server/odata/entityName.

    下面的 URL 应该得到你需要的数据:

    http://server/odata/entityName?$select=PostalCode,FranchiseId&$expand=Franchise($select=FranchiseeName)

    这应该只返回所需的数据,但仍具有与完整数据相同的结构,例如:

    {
      "PostalCode": "48103",
      "FranchiseId": 397,
      "Franchise": {
        "FranchiseeName": "Appliance.inc"
      }
    }
    

    【讨论】:

    • 是的,这行得通,它正在选择您在此示例中发布的内容。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    相关资源
    最近更新 更多