2017-10-09 146 views
1

我对定义API的REST URI的最佳方式有疑问。将两个不同参数传递给REST API的最佳解决方案是什么?

我有一个提供商品细节的API。

所以我知道我可以做一个GET要求是这样的:

http://XXX.YYY.ZZZ.TTT:8280/commodity_details/1 

其中commodity_details是我想获得(商品详细信息)和什么的的ID特定商品。这应该是一个适当的REST URI。

好吧,我知道,我也可以通过ID参数为JSON文件doint一个POST要求是这样的:

http://XXX.YYY.ZZZ.TTT:8280/commodity_details/ 

和attacching一个JSON有效载荷像这样我的POST要求:

{ 
"commodity_id": 1 
} 

我想,如果我有一个commodity_id参数也许是更好的第一个版本(把所需的ID到URI中),是吗?

但是如果我需要第二个language_id参数会发生什么? (我的API应该也收到此LANGUAGE_ID参数,因此它可以提供适当的语言的internazionalized输出。

因此,在这种情况下,我需要通过2个参数(commodity_idLANGUAGE_ID)。

在这种情况下最好使用POST请求用JSON的有效载荷,其中包含两个参数事情是这样的:?

{ 
"commodity_id": 1, 
"language_id": 2 
} 

或者对于这种情况可能是一个很好的URI模板?

+2

不要滚你自己 - ['接受-Language'(https://开头developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language)。通常,对于您在URL中仍然需要的横切关注点,您可以使用[查询字符串](https://en.wikipedia.org/wiki/Query_string) - '/ commodity_details/1?language = 2' – jonrsharpe

+0

使用é执行RESTful API的参数并不可靠? 接受语言怎么样?它是否可以设置为选择想要的语言? – AndreaNobili

+1

1.什么? 2.我提供了MDN的链接,你读过了吗? – jonrsharpe

回答

-1

对于刚刚经过两个参数就可以用第一种方法(查询字符串参数),这是简单的去使用

[HttpGet("{commodity_id}/{language_id}")] 

public string GetCommodityDetails(string commodity_id, string language_id) 
{ 
string commodityDetails=string.empty; 

//your implementation 

return commodityDetails; 
} 
相关问题