一、总结整理,本实例对应.Net Core 2.0版本

1.在.Net Core WebAPI 中对于参数的获取及自动赋值,沿用了Asp.Net  MVC的有点,既可以单个指定多个参数,右可以指定Model类类型接受

2.在.Net Core WebAPI 中可以对参数不指定FromUri,FromBody等

3.在.Net Core WebAPI中增加了简单路由参数指定模式,在【HttpGet("{id}/{name}")】 方法注释中,可以直接指定路由模板,然后在对应参数列表中自动赋值。

4.在.Net Core WebAPI中如果想添加复杂的路由控制,需要在StartUp启动文件中配置,和以前一样,指定路由约束、命名空间等。

二、多个参数接受示例,以HttpGet为参考

1.使用多个单数接受,也可使用类类型接受参数

注:在参数自动处理中,如果参数不存在或类型转换不正确则返回当前类型的默认值,如果是引用类型返回类型的空对象而不是null,也就是参数处理过程一般不抛出异常

[HttpGet("test")]
public string Test(int id, string name, DateTime date)
{
return $"{id},{name},{date}";
}
[HttpGet("TestTwo")]
public TestParam Test2(TestParam model)
{
return model;
} public class TestParam
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
}

三、更方便方式,使用路由模板,处理地址栏和参数对应

[Produces("application/json")]
[Route("api/Menu")]
public class MenuController : Controller
{
ModelMenuContext _Context = new ModelMenuContext();
//1.获取对象
[HttpGet("{id}")]
public Menu GetModel(int id)
{
Menu model = _Context.Menu.Find(id);
if (model == null)
throw new Exception($"获取id={id}的对象失败");
return model;
} [HttpGet("{id}/{name}")]
public string Test3(int id, string name)
{
return $"主键:{id},姓名:{name}";
}
}

四、以更灵活方式,配置复杂的路由控制

在Startup.cs文件

默认配置

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//使用路由默认配置
app.UseMvc();
}

扩展处理

app.UseMvc(routes =>
{
//扩展路由
routes.MapRoute(
name: "about-route",
template: "about",
defaults: new { controller = "Home", action = "About" }); routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});

更多:

Asp.Net Core WebAPI入门整理(三)跨域处理

Asp.Net Core WebAPI入门整理(二)简单示例

Asp.Net Core WebAPI入门整理(一)

Asp.Net Core WebAPI入门整理(四)参数获取的更多相关文章

  1. Asp.Net Core WebAPI入门整理(二)简单示例

    一.Core WebAPI中的序列化 使用的是Newtonsoft.Json,自定义全局配置处理: // This method gets called by the runtime. Use thi ...

  2. Asp.Net Core WebAPI入门整理(三)跨域处理

    一.Core  WebAPI中的跨域处理  1.在使用WebAPI项目的时候基本上都会用到跨域处理 2.Core WebAPI的项目中自带了跨域Cors的处理,不需要单独添加程序包 3.使用方法简单 ...

  3. Asp.Net Core WebAPI入门整理(一)

    一.Asp.Net Core  WebAPI 1.目前版本是v1.1 2.默认路由处理和Asp.Net WebAPI有些 区别了,现在使用的是控制器路由[Route("api/Menu&qu ...

  4. ASP.NET Core WebApi 返回统一格式参数(Json 中 Null 替换为空字符串)

    相关博文:ASP.NET Core WebApi 返回统一格式参数 业务场景: 统一返回格式参数中,如果包含 Null 值,调用方会不太好处理,需要替换为空字符串,示例: { "respon ...

  5. ASP.NET Core WebApi 返回统一格式参数

    业务场景: 业务需求要求,需要对 WebApi 接口服务统一返回参数,也就是把实际的结果用一定的格式包裹起来,比如下面格式: { "response":{ "code&q ...

  6. Asp.Net Core WebApi学习笔记(四)-- Middleware

    Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Mid ...

  7. asp.net core WebAPI学习以及 发布(***入门学习)

    A asp.net Core 系列[一]——创建Web应用 asp.net Core 系列[二]—— 使用 ASP.NET Core 和 VS2017 for Windows 创建 Web API a ...

  8. ASP.Net Core WebApi几种版本控制对比

    版本控制的好处: (1)助于及时推出功能, 而不会破坏现有系统. (2)它还可以帮助为选定的客户提供额外的功能. API 版本控制可以采用不同的方式进行控制,方法如下: (1)在 URL 中追加版本或 ...

  9. ASP.NET Core WebApi使用Swagger生成api说明文档

    1. Swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件 ...

随机推荐

  1. shell学习(四)

    一.字符截取 expr 基本用法 expr  substr   $var1   起始位置    截取长度,如: [root@localhost mnt]# a=Centos6.9[root@local ...

  2. 009 jquery过滤选择器-----------(表单对象属性过滤选择器 与 表单选择器)

    1.表单对象属性选择器 2.程序 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  3. 026.Zabbix简单调优

    一 调优相关对应项 Zabbix busy trapper processes, in % StartTrappers=5 Zabbix busy poller processes, in % Sta ...

  4. 命令:man

    简介 man命令,是manual的缩写,manual表示手册的意思.通过man命令,可以查询大多数shell外部命令的帮助手册. 语法格式 # man [[section] page ...] ... ...

  5. Android项目无法运行在x86的虚拟机上

    Android项目无法运行在x86的虚拟机上 解决办法来自 https://blog.csdn.net/qq_33495943/article/details/70255942 运行程序的时候报错如下 ...

  6. iOS 11开发教程(十七)iOS11应用视图之使用按钮接收用户输入

    iOS 11开发教程(十七)iOS11应用视图之使用按钮接收用户输入 在iOS中提供了很多的控件以及视图来丰富用户界面,对于这些视图以及控件我们在上一章中做了简单的介绍.本章我们将详细讲解这些视图. ...

  7. ==与equals与hashCode的区别联系。

    前言:对于引用类型的变量,它涉及到两块内存,一块是堆中的内存,用于存放new出来的对象(就是对象的具体内容):另一块是栈内存,用来存放变量在堆内存中的地址. 1,“==” 判断两个变量是否是同一个变量 ...

  8. FireDAC 下的 Sqlite [4] - 创建数据库

    建立数据库的代码: {建立内存数据库的一般代码:} begin FDConnection1.DriverName := 'SQLite'; //同 FDConnection1.Params.Add(' ...

  9. Delphi 的链式代码

    有了一系列的 Helper, Delphi 也可以使用链式代码了. //譬如要把 3.1415926 中的 141 提取为一个整数: var num: Integer; begin num := Pi ...

  10. MikroTik RouterOS电子克隆盘原理收集

    终于搞定RouteROS8位电子盘克隆,发个讯息出来分享一下. 不需要付费的免费分享,也没要刻意挡人财路:只是让信息流通一下. 也请看到的人不要用这个方式去赚钱,不然MikroTik还是会再反制的. ...