向RESTAPI传递两个不同参数的最佳解决方案是什么?
我怀疑什么是为API定义RESTURI的最佳方法 我有一个API,提供商品的详细信息 所以我知道我可以做一个获取请求,如下所示:向RESTAPI传递两个不同参数的最佳解决方案是什么?,rest,api,web-services,restful-url,Rest,Api,Web Services,Restful Url,我怀疑什么是为API定义RESTURI的最佳方法 我有一个API,提供商品的详细信息 所以我知道我可以做一个获取请求,如下所示: http://XXX.YYY.ZZZ.TTT:8280/commodity_details/1 http://XXX.YYY.ZZZ.TTT:8280/commodity_details/ { "commodity_id": 1, "language_id": 2 } 其中,commodity\u details是我想要获得的(商品详情),而1是特定商品的ID
http://XXX.YYY.ZZZ.TTT:8280/commodity_details/1
http://XXX.YYY.ZZZ.TTT:8280/commodity_details/
{
"commodity_id": 1,
"language_id": 2
}
其中,commodity\u details是我想要获得的(商品详情),而1是特定商品的ID。这应该是一个适当的RESTURI
好的,我知道我也可以将ID参数传递到JSON文档中,并发出如下请求:
http://XXX.YYY.ZZZ.TTT:8280/commodity_details/1
http://XXX.YYY.ZZZ.TTT:8280/commodity_details/
{
"commodity_id": 1,
"language_id": 2
}
并将类似这样的JSON负载附加到我的POST请求:
{
"commodity_id": 1
}
我认为,如果我有一个商品id参数,那么第一个版本(将所需id放入URI)可能会更好,是吗
但是如果我需要第二个语言id参数,会发生什么?(我的API还应接收此语言id参数,以便它能够以适当的语言提供国际化输出
因此,在本例中,我需要传递两个参数(商品id和语言id)
在这种情况下,最好使用一个包含两个参数的JSON有效负载的POST请求,如下所示:
http://XXX.YYY.ZZZ.TTT:8280/commodity_details/1
http://XXX.YYY.ZZZ.TTT:8280/commodity_details/
{
"commodity_id": 1,
"language_id": 2
}
或者,对于这个场景,什么样的URI模板才是好的呢?对于只传递两个参数,您可以使用第一种方法(查询字符串参数),它使用起来更简单
[HttpGet("{commodity_id}/{language_id}")]
public string GetCommodityDetails(string commodity_id, string language_id)
{
string commodityDetails=string.empty;
//your implementation
return commodityDetails;
}
不要滚动你自己的-。一般来说,对于你仍然想要在URL中的横切关注点,你可以使用-
/commodity\u details/1?language=2
参数withéis not orry实现RESTful API?接受语言呢?它是一个可以设置为选择所需语言的头吗?1…什么?2.我提供d链接到MDN,你读了吗?