gpt4 book ai didi

java - RESTful 服务的 url 设计

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:06 27 4
gpt4 key购买 nike

我有一个名为 Pricing 的资源,我想检索它。 Offer 可以有定价,Promo 可以有 Pricing 资源,还有另一个实体 Customer定价可以映射。我想根据 OfferId/PromoId/CustomerId 之一检索 Pricing

为此设计 URL,我遇到了两个选择:

选项 1:将其作为查询字符串传递

/pricing?OfferId=234&PromoId=345&CustomerId=543234

选项 2:拥有三个 API

/pricing/offer?id=234
/pricing/promo?id=345
/pricing/customer?id=543234

IMO,OfferId/PromoId/CustomerId 应被视为资源的属性。因此将属性作为查询字符串传递。我更倾向于选项 1。

选项 2 避免了 if else 条件来检索资源并且看起来更清晰,但它似乎支持 URL 设计的 REST 标准吗?

设计 URL 的 REST 标准是什么。您会推荐哪个选项?

最佳答案

我更喜欢选项 1。
方案二存在以下缺陷:

  1. 它可能会使用户感到困惑。例如,/pricing/offer/234 似乎表示 Offer 资源,而不是 Pricing 资源。
  2. 在业务逻辑中,一个Offer 资源包含一个Pricing,但是/pricing/offer/234 表示权利相反。它似乎就像一个 Pricing 资源包含一个 Offer 资源。

其实方案一也有一些问题。例如,

/pricing?OfferId=234&PromoId=345&CustomerId=543234  

会得到三个定价,对吗?看来

/pricings?OfferId=234&PromoId=345&CustomerId=543234  

更合理。

您可以考虑的另一个选项是选项 3:

/offer/234/pricing
/promo/345/pricing
/cusomer/543234/pricing

希望对您有所帮助。

关于java - RESTful 服务的 url 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19016040/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com