那些年踩过的WebAPI的坑

Posted 古道瘦西风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了那些年踩过的WebAPI的坑相关的知识,希望对你有一定的参考价值。

 

Visual Studio创建一个web项目,

在下一步的时候创建WebAPI项目的时候勾选web API之后,系统会生成一个web项目。

首先看一下webapi的路由配置,在App_start/webapiconfig.cs中,可以看到如下代码:

 1 public static void Register(HttpConfiguration config)
 2         {
 3             // Web API configuration and services
 4 
 5             // Web API routes
 6             config.MapHttpAttributeRoutes();
 7 
 8             config.Routes.MapHttpRoute(
 9                 name: "DefaultApi",
10                 routeTemplate: "api/{controller}/{id}",          //注意此处
11                 defaults: new { id = RouteParameter.Optional }
12             );
13         }

如果按照此默认的webAPI进行开发的话,新建一个APIController,并创建一个方法,如这里我自己的:

当只有一个登陆方法是,运行此项目,请求../api/Account/login没问题。但有时候在Account中可能有很多API方法,不仅仅是登陆还有注册呢?再添加一个方法regist,请求../api/Account/regist。是不是对接下来的500错误很惊讶?

"Message":"An error has occurred.","ExceptionMessage":"Multiple actions were 
 found that match the request 多个匹配该请求的Action

再回头看生成的API配置路由,对于请求

../api/Account/login

../api/account/regist

匹配路径:

routeTemplate: "api/{controller}/{id}",

name这两个路由可不就有多个action了吗?所以在匹配路径上修改为

routeTemplate: "api/{controller}/{action}/{id}",

OK !只能感叹一下

 

以上是关于那些年踩过的WebAPI的坑的主要内容,如果未能解决你的问题,请参考以下文章

那些年踩过的坑

那些年踩过的坑(持续更新)

那些年深度学习所踩过的坑-第一坑

Notes

那些年踩过的深度学习坑一 维度问题

那些年踩过的深度学习坑一 维度问题