设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1538|回复: 0
打印 上一主题 下一主题

ASP.NET WebApi 路由匹配及参数传递(三)

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2021-9-17 11:54:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhuyiwen 于 2021-9-17 12:06 编辑

五、变个花样

在 ValueController 控制器中添加一个新方法,
  1.         // GET api/value?key={key}&value={value}
  2.         [HttpGe]
  3.         public string KeyValue(string key, string value)
  4.         {
  5.             return string.Format("key: {0}, value: {1}", key, value);
  6.         }
复制代码

从代码中,可以看出方法名称为 KeyValue,并不是 Web Api 的方法名称开头(GET/POST/PUT/DELETE),所以,在方法定义的前一行用 [HttpGet] 注明,指明它是一个 GET 方法。

再添加一个测试网页,
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  5.     <title>测试Api</title>
  6.     <script src="Mobile/lib/jquery-3.4.1/jquery-3.4.1.min.js"></script>
  7. </head>

  8. <body>
  9.     <div>
  10.         <input id="Button1" type="button" value="测试 /Api/Value" />
  11.     </div>

  12.     <script type="text/javascript">
  13.         function test1() {
  14.             $.ajax({
  15.                 url: '/Api/Value',
  16.                 method: 'GET',
  17.                 data: { "key": 'name', "value": 'master' },
  18.                 success: function (r) {
  19.                     console.info(r);
  20.                 }
  21.             });
  22.         }
  23.     </script>
  24. </body>
  25. </html>
复制代码

使用 jQuery Ajax 来测试刚增加的方法。运行工程,在 Chrome/360极速浏览器中打开这个网页,按 F12 键,打开 Chrome Devtool,点击网页中的“测试 /Api/Value”按钮,看到什么



自然是通过 Ajax 使用 GET 方法调用 Web Api 方法 Api/Value,并路由到 ValueController KeyValue 方法。

分析:
假设都是使用 Web Api 的 GET 方法。
  • url: '/Api/Value/5' 匹配到 public string Get(int id)
  • url: '/Api/Value', data: {} 匹配到 public IEnumerable<string> Get()
  • url: '/Api/Value', data: { "key": 'name', "value": 'master' } 匹配到 public string KeyValue(string key, string value)

发挥想像力,你想到了什么?

结论:Web Api 的调用与控制器中的方法名称无关,但与 Web Api 的方法(GET/POST/PUT/DELETE)有关,与 id 有关,与参数有关(C# 的重载)。

来自群组: ACC应用开发心得交流

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-25 17:40 , Processed in 0.096832 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表