REST URL在查询中的最佳做法是保留还是存在

时间:2017-02-19 18:11:45

标签: rest api

我有预订系统的API。 两个基本实体: - 预订和财产

public class Booking
{
    public DateTime CheckInDate {get; set;}
    public DateTime CheckOutDate {get; set;}
    public int PropertyId {get; set;}
}

public class Property
{
    public int Id {get; set;}
}

我需要知道一段时间内是否有特定属性。

此网址对此请求有效吗?

  

/ API /预订/ availableProperty属性ID = 1&安培; CheckInDate = 1 /2017分之1&安培; CheckOutDate = 1 /二千〇一十七分之二

作为isPropertyReserved URL的结果返回布尔值是否有效?

  

/ API /预订/ isPropertyReserved属性ID = 1&安培; CheckInDate = 1 /2017分之1&安培; CheckOutDate = 1 /二千〇一十七分之二

1 个答案:

答案 0 :(得分:0)

在REST中,您应该专注于定义collections and resources,而不是尝试为每个案例定义大量不协调的API端点。

在您的模型中, Property 表示具有标识符且可以从check-in <{1> 预订的资源}},所以引入check-out集合似乎很自然(但是,根据您的要求,您可以选择引入properties集合):

请求(获取所有属性)

bookings

<强>响应

GET: api/properties

请求(获取ID为1的属性)

[
  {
    "url": "api/properties/1",
    "bookings":[
      {
        "url": "api/properties/1/bookings",
        "checkInDate": "2017-01-01",
        "checkOutDate": "2017-02-01"
      }
    ]
  },
  {
    "url": "api/properties/2",
    "bookings": []
  }
]

<强>响应

GET: api/properties/1

请求(获取ID为1的所有预订)

{
  "url": "api/properties/1",
  "bookings":[
    {
      "url": "api/properties/1/bookings",
      "checkInDate": "2017-01-01",
      "checkOutDate": "2017-02-01"
    }
  ]
}

<强>响应

GET: api/properties/1/bookings

请求(检查特定日期是否有预订)

[
  {
    "url": "api/properties/1/bookings",
    "checkInDate": "2017-01-01",
    "checkOutDate": "2017-02-01"
  }
]

回复(预订详情,如果找到;如果没有,则为空结果)

GET: api/properties/1/bookings/2017-01-15