那些年踩过的WebAPI的坑(一)

摘要:
系统将生成一个web项目。“api/{controller}/{id}”,新的{id=RouteParameter。可选的}12);然而,有时帐户中可能有许多API方法,例如“消息”:“找到了多个与请求匹配的操作。然后回顾生成的API配置路由。

Visual Studio创建一个web项目,

那些年踩过的WebAPI的坑(一)第1张

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

那些年踩过的WebAPI的坑(一)第2张

首先看一下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,并创建一个方法,如这里我自己的:

那些年踩过的WebAPI的坑(一)第3张

当只有一个登陆方法是,运行此项目,请求../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的坑(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SSH 免密码登陆CSS3 border-image详解、应用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ABAPGIT用法

本文主要介绍ABAPGIT的用法. 未尽部分请参考https://docs.abapgit.org/. 安装及配置SSL可以参考我的blog:https://www.cnblogs.com/weixiaopeng/p/13232223.html.  https://dotabap.org/这个网址收录了很多好用的ABAP开源项目. 1.开发对象的导出 单个...

Yii2的深入学习--行为Behavior

我们先来看下行为在 Yii2 中的使用,如下内容摘自 Yii2中文文档 行为是 [[yiiaseBehavior]] 或其子类的实例。行为,也称为 mixins,可以无须改变类继承关系即可增强一个已有的 [[yiiaseComponent|组件]] 类功能。当行为附加到组件后,它将“注入”它的方法和属性到组件,然后可以像访问组件内定义的方法和属性一样访问它...

Flutter 总结apk打包上架问题(keystore,依赖包下载报错,apk文件项目请求报错等)

本地码完代码,各环境测试人员测试完毕,正准备打包安卓apk上架应用商店时,烧脑问题来了而且还不止一个....... 接下面讲述我所遇到的几个问题: 本人掘金文章 一:  keystore 签名生成不了,对于非原生的人来说这也是个蛮大的坑。按照Flutter官方文档的步骤就是生成不了... 1. 原因,生成key的路劲不对,不要照搬官方的指令,修改下生成...

ASP.NET MVC5开发记录

Request 和 Request.form 和 Request.QueryString 的区别: (参考:https://www.cnblogs.com/tianguook/p/3592531.html) Request.Form["key"] 获取对应key的value值,用于POST过来的数据,不限制数据大小 Request.QueryString[...

TeamViewer远程唤醒主机实战教程(多图)

前言:首先感谢大家来到这里。这篇文章事实上算是一个教程,文章中涉及到了TeamViewer,Mac OS X,TP-Link家用路由器,以及花生壳DDNS,对于新手而言内容可能略微有些多,但我相信依照我的教程一步一步做下来。应该不会遇到太大的困难,假设有看不懂的地方,或者遇到了新的问题。请留言给我,我将尽我所能回答你。 对于老手而言,这篇文章实在没有太多...

JSP基础知识➣获取参数和过滤器(四)

JSP表单提交和参数获取   JSP表单提交的两种方式:post和get,通过这两种方式提交的参数到后台,获取参数的值主要由request来处理,获取值的方式有以下几种: getParameter(): 使用 request.getParameter() 方法来获取表单参数的值。 getParameterValues(): 获得如checkbox类(名字...