我有预订系统的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 /二千〇一十七分之二
答案 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