我考虑如何在JAX-RS中设计我的RESTful Web服务,我遇到了一些问题。 我有具有ServicePoints的Provider,而ServicePoint实体具有由provider_id和service_point_no组成的复合键。如此逻辑似乎有:
/providers/1/service-points/3
但我也可以独立于提供商检索服务点,以获取给定位置的所有服务点。
/service-points // all
/service-points?location=CountryName
但在第一种方法中我会:
@Path("/")
class ServicePointResource { /* ... */ }
当然,我可以通过多种方式定义它来解决这种情况,例如:
@Path("/providers")
class Provider {
@Path("/{providerId}/service-points")
public ServicePointResource getServicePointResource() { }
@Path("/")
class ServicePointResource {
// here implemented subresource sepcific code
}
}
@Path("/service-points")
class ServicePointResource {
// here emplemented resource sepcific code
}
或只是:
@Path("/")
class ProviderServicePointResource {
// here subresource specific code
}
@Path("/service-points")
class ServicePointResource {
// here resource specific code
}
子资源方法似乎很自然,但在某些情况下使用ServicePoint就像全局资源一样,在没有Provider划分的情况下访问它似乎也很重要。 我也可以在这里使用:
/service-points/1+3 // to represent composite key
/providers/1/service-points/3 // but it seems more natural
任何提示?
答案 0 :(得分:0)
如果您认为服务点是主要资源而提供商是次要的,您可以使用
/service-point/id // service point by id
/service-point?provider=id // all service point of provider
你也可以使用像这样的矩阵参数
/service-point;id=x;provider=y
这样你可以组合任意数量的参数。 如果你认为服务点和提供者都是主要资源,我会留下两条路径:
/service-point/id
/provider/id1/service-point/
/provider/id1/service-point/id2