zoukankan      html  css  js  c++  java
  • .net core webapi的参数设置

    一、总结整理,本实例对应.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" });
    });
    复制代码
  • 相关阅读:
    .NET逻辑分层架构总结
    ASP.NET MVC 4 的JS/CSS打包压缩功能-------过滤文件
    c#实现浏览器端大文件分块上传
    fckeditor如何能实现直接粘贴把图片上传到服务器中?
    web编辑器直接粘贴图片实现
    富文本编辑器直接粘贴图片实现
    百度ueditor编辑器直接粘贴图片实现
    百度编辑器直接粘贴图片实现
    fckeditor直接粘贴图片实现
    wangEditor直接粘贴图片实现
  • 原文地址:https://www.cnblogs.com/DSC1991/p/13642363.html
Copyright © 2011-2022 走看看