首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以重载一个Web调用吗?

我可以重载一个Web调用吗?
EN

Stack Overflow用户
提问于 2014-11-10 23:15:59
回答 1查看 372关注 0票数 1

我正在尝试设置我的Web应用程序,以便能够接受以下内容

/api/product/1,其中1是ID,类似于/api/product/偏牙列

后者,我不能点击我的get (字符串别名)方法。(int )和GetProducts()工作得很好。

路线

代码语言:javascript
复制
config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            config.Routes.MapHttpRoute(
                name: "AliasSelector",
                routeTemplate: "api/{controller}/{alias}"
            );

控制器

代码语言:javascript
复制
[AcceptVerbs("GET")]
 public IProduct Get(int id)
 {
    return new Product(id);
 }
 [AcceptVerbs("GET")]
 public IProduct Get(string alias)
 {
     return new Product(alias);
 }
 [AcceptVerbs("GET")]
 [ActionName("Products")]
 public IEnumerable<IProduct> GetProducts()
 {
      return new Products().ToList();
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-12 10:47:41

假设您的id总是一个整数,而别名总是一个字符串,那么您可以尝试添加如下的路由约束:

代码语言:javascript
复制
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional },
    constraints: new { id = @"\d*" }
);

config.Routes.MapHttpRoute(
    name: "AliasSelector",
    routeTemplate: "api/{controller}/{alias}",
    constraints: new { alias= @"[a-zA-Z]+" }
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26854832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档