.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" });
});
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM