ASP.NET 路由 - 末尾有或没有斜杠

发布于 2024-11-01 19:51:38 字数 632 浏览 5 评论 0原文

考虑以下服务合同:

[WebGet(UriTemplate = "/stores")]
DTO.Stores GetAllStores();

[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string name);

我可以访问这两个 URL: http://localhost/v1/storeshttp://localhost/v1/stores/Joe。然而,Url http://localhost/v1/stores/ (注意末尾的斜杠)返回给我一个“找不到端点”错误。理想情况下,我希望 http://localhost/v1/stores/ 调用 GetAllStores()。

我怎样才能做到这一点?谢谢!

Considering the following Service Contract:

[WebGet(UriTemplate = "/stores")]
DTO.Stores GetAllStores();

[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string name);

I can reach these two Urls: http://localhost/v1/stores and http://localhost/v1/stores/Joe. However the Url http://localhost/v1/stores/ (notice the slash at the end) returns me an "Endpoint not found" error. Ideally, I would like http://localhost/v1/stores/ to call GetAllStores().

How can I do that? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

没有伤那来痛 2024-11-08 19:51:38

我会尝试输入波浪号。也许“~/stores”?

或者,使用路由时,将“/”放在前面。

I would try putting a tilde in. Perhaps "~/stores"?

Or, with routing, drop the "/" at the front.

骷髅 2024-11-08 19:51:38

如果使用“string?name”作为参数怎么办?

[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string? name);

由于您拥有的两种方法都返回相同的内容(DTO.Stores),因此您可以使用单个方法来获取 Stores,而不是两个方法(就像您现在所做的那样)。像这样:

[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string? name)
{
    if(string.IsNullOrEmpty(name))
    {
        //get specific store
    }
    else
    {
        //get all stores
    }
}

PS:我不确定这是否适用于 WCF,但请尝试一下。 ;-)

What if you use "string? name" as parameter?

[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string? name);

And since both methods you have are returning the same thing (DTO.Stores) you could use a single method to get the Stores instead of two (as you are doing now). Like this:

[WebGet(UriTemplate = "/stores/{name}")]
DTO.Stores GetStores(string? name)
{
    if(string.IsNullOrEmpty(name))
    {
        //get specific store
    }
    else
    {
        //get all stores
    }
}

P.S.: I am not sure if that would work well with WCF, but give it a try. ;-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文