将两个不同参数传递给REST API的最佳解决方案是什么?

时间:2017-10-09 08:57:12

标签: rest api web-services restful-url

我对可能是为API定义REST URI的最佳方式存在疑问。

我有一个提供商品详情的API。

所以我知道我可以这样做 GET 请求:

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

其中 commodity_details 是我想要获得的(商品详情), 1 是特定商品的ID。这应该是一个合适的REST URI。

好的,我知道我也可以将ID参数传递到JSON文档中,像这样执行 POST 请求:

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

并将这样的JSON有效负载附加到我的 POST 请求:

{
"commodity_id": 1
}

我认为如果我有单个 commodity_id 参数可能比第一个版本(将所需的ID放入URI)更好,是吗?

但如果我需要第二个 language_id 参数,会发生什么? (我的API也应该接收这个 language_id 参数,这样它就可以用适当的语言提供一个国际化的输出。

所以在这种情况下我需要传递2个参数( commodity_id language_id )。

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

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

或者这个场景可能是一个很好的URI模板?

1 个答案:

答案 0 :(得分:-1)

对于仅传递2个参数,您可以使用第一种方法(查询字符串参数),这种方法更易于使用

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

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

//your implementation

 return commodityDetails;  
}