我有一个Pricing我想要检索的资源.一个Offer可以具有定价和Promo可以有Pricing资源,有另一个实体Customer与Pricing可映射.我想Pricing基于OfferId/ PromoId/ 之一检索CustomerId.
要为此设计URL,我遇到两个选项:
选项1:将其作为查询字符串传递
/pricing?OfferId=234&PromoId=345&CustomerId=543234
Run Code Online (Sandbox Code Playgroud)
选项2:有三个API
/pricing/offer?id=234
/pricing/promo?id=345
/pricing/customer?id=543234
Run Code Online (Sandbox Code Playgroud)
IMO,OfferId/ PromoId/ CustomerId应被视为资源的属性.因此将属性作为查询字符串传递.我更倾向于选项1.
选项2避免if else条件检索资源,看起来更干净,但它似乎支持REST设计的URL标准?
什么是设计URL的REST标准.你会推荐哪个选项?
我更喜欢选项1.
选项2有以下缺陷:
/pricing/offer/234似乎代表Offer资源,而不是Pricing资源.Offer资源包含一个Pricing,但
/pricing/offer/234代表正确的方式.看起来Pricing资源包含Offer资源.实际上,选项1也存在一些问题.例如,
/pricing?OfferId=234&PromoId=345&CustomerId=543234
Run Code Online (Sandbox Code Playgroud)
会得到三个Pricings,对吗?它似乎
/pricings?OfferId=234&PromoId=345&CustomerId=543234
Run Code Online (Sandbox Code Playgroud)
更合理.
您可以考虑的另一个选项是选项3:
/offer/234/pricing
/promo/345/pricing
/cusomer/543234/pricing
Run Code Online (Sandbox Code Playgroud)
希望它有所帮助.
最干净且遵循标准路径的方式是:
/pricing/offer/234
/pricing/promo/345
/pricing/customer/543234
Run Code Online (Sandbox Code Playgroud)
布局为:/pricing/${offer|promo|customer|/${PathParamForId}
然后,您可以将其作为三种单独的方法,每种方法用于报价/促销/客户。
然后,您只需确保您的 API 有详细记录,以便用户了解路径的预期行为。(报价与促销查找之间的差异等)
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |