mysql - 无法在单个 Controller 中运行多个 GET 方法

标签 mysql asp.net-mvc rest visual-studio-2015 asp.net-web-api2

我使用 MySQL DB 在 Visual Studio 2015 中创建了一个 WEB API。我有三个 GET 方法。第一个是给出所有数据,第二个是根据 ID 给出结果,第三个是根据序列号给出结果。前两种方法工作正常,但最后一种方法则不然。我还在解决方案中添加了多个路由。下面是我的代码

WebApiConfig

config.Routes.MapHttpRoute(
           name: "DefaultApi",
           routeTemplate: "api/{controller}/{id}",
           defaults: new { id = RouteParameter.Optional }
       );



        config.Routes.MapHttpRoute(
        name: "GetByMsn",
        routeTemplate: "api/{controller}/{action}/{msn}",
        defaults: null,
        constraints: new { msn = @"^[a-z]+$" }

Controller

 public HttpResponseMessage Get()
    {
        try
        {
            return Request.CreateResponse(HttpStatusCode.Found, mEntities.meters_info_dev.ToList());
        }
        catch (Exception ex)
        {
            return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
        }
    }


    // GET by ID
    public HttpResponseMessage GetByID(int id)
    {
        try
        {
            return Request.CreateResponse(HttpStatusCode.Found, mEntities.meters_info_dev.SingleOrDefault(m => m.id == id));
        }
        catch (Exception ex)
        {
            return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
        }
    }


    // GET by serial number
    public HttpResponseMessage GetByMsn(string msn)
    {
        try
        {
            return Request.CreateResponse(HttpStatusCode.Found, mEntities.meters_info_dev.SingleOrDefault(m=> m.meter_msn == msn));
        }
        catch
        {
            return Request.CreateErrorResponse(HttpStatusCode.NotFound, "No Data found");
        }
    }

GetByMsn 是不起作用的。我尝试过更改路线,但结果仍然相同。 solution 1solution 2给出的对我不起作用。

任何帮助将不胜感激。

最佳答案

config.Routes.MapHttpRoute(
    name: "GetByMsn",
    routeTemplate: "api/{controller}/{action}/{msn}",
    defaults: null,
    constraints: new { msn = @"^[a-z]+$" }

上面的约束是按字母顺序排列的,我只需将其更改为 @"^[0-9]+$" ,它就开始为我工作。

关于mysql - 无法在单个 Controller 中运行多个 GET 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46426743/

相关文章:

java - 如何使 Jersey Rest POST 请求同步

spring - 如何在代理后面配置 Spring HATEOAS?

php - 如何使用json检索数据到mysql android

javascript - Express:内部服务器错误导致服务器停止

c# - 如何授予我的 ASP.NET MVC 应用程序对注册表项的读取访问权限?

c# - ASP.NET MVC Razor : How to render a Razor Partial View's HTML inside the controller action

mysql - order by rand 的查询问题

mysql - 在 Django 中将未知对象类型保存到数据库中

javascript - MVC JQuery Ajax Busy Indicator 覆盖在表单上

c# - NewRelic 忽略单个页面的监控