考虑以下服务合同:
[WebGet(UriTemplate = "/stores")]
DTO.Stores GetAllStores();
[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string name);
我可以访问这两个网址:http://localhost/v1/stores和http://localhost/v1/stores/Joe。但是Url http://localhost/v1/stores/(注意结尾处的斜杠)会返回“Endpoint not found”错误。理想情况下,我希望http://localhost/v1/stores/调用GetAllStores()。
我该怎么做?谢谢!
答案 0 :(得分:0)
我会尝试使用波浪号。或许“〜/ stores”?
或者,通过路由,将“/”放在前面。
答案 1 :(得分:0)
如果使用“string?name”作为参数怎么办?
[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string? name);
由于你所拥有的两种方法都返回相同的东西(DTO.Stores),你可以使用一种方法来获取商店而不是两种(就像你现在所做的那样)。像这样:
[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string? name)
{
if(string.IsNullOrEmpty(name))
{
//get specific store
}
else
{
//get all stores
}
}
P.S。:我不确定这是否适用于WCF,但试一试。 ; - )