【WebAPI No.1】創建簡單的 .NETCore WebApi


介紹:

官方定義如下,強調兩個關鍵點,即可以對接各種客戶端(瀏覽器,移動設備),構建http服務的框架。Web API最重要的是可以構建面向各種客戶端的服務。

core的WebAPI與ASP.NET WebAPI是有些區別的,現在使用的是控制器路由[Route("api/Menu")]和請求方式路由[HttpGet]、[HttpGet("{id}")]結合的 方式。直接在控制器和Action上使用方法注釋。沒有ASP.NET WebAPI存在單獨的配置路由規則類。先配置,然后進行注冊后才可以使用。

Web API的主要功能:

1. 支持基於Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作

 通過不同的http動作表達不同的含義,這樣就不需要暴露多個API來支持這些基本操作。

2. 請求的回復通過Http Status Code表達不同含義,並且客戶端可以通過Accept header來與服務器協商格式,例如你希望服務器返回JSON格式還是XML格式。

3. 請求的回復格式支持 JSON,XML,並且可以擴展添加其他格式。

4. 原生支持OData。

5. 支持Self-host或者IIS host。

創建項目:

首先:打開vs選中新建項目- >選中.NET Core - >ASP.NET Core Web應用程序:

 

然后:在選擇web應用程序,注意上面要選中.net Core 別選錯了。在選擇Web API

最后:看到一個新建好的項目結構:

 驗證:最后打開基礎網址看一下效果:

再修改網址路徑:http://localhost:4833/api/values

基本介紹:

創建自己新的控制器:

路由的基本功能:

    控制器路由:

        [Route("api/Menu")]

    Action路由:

        1.根據HttpMethod路由 [HttpPut]

        2.根據Template模板路由[HttpGet("{id}")]

    Core WebAPI中返回數據處理,提供了更 多的選擇:

        1.OKResult,OkObjectResult,返回狀態為200

        注:用OkObjectResult 前台jquery自動解析為object對象,不需要進行反序列化處理

        2.ContentResult 返回字符串

        3.JsonResult 返回Json對象,前台不需要反序列化處理

        4.返回基礎類型和引用類型 ,自動序列化,前台接收為object對象等

 請求的一點補充:

    get請求參數如果在路由中配置就不能使用?拼接直接使用/值形式;例如:

錯誤寫法:http://localhost:4833/api/Test?id=5

正確寫法:http://localhost:4833/api/Test/5

跨域處理:

Core WebAPI的項目中自帶了跨域Cors的處理,不需要單獨添加程序包。我們只需要在全局配置處配置就可以了。

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddCors(options =>
            {
                options.AddPolicy("any", builder =>
                {
                    builder.AllowAnyOrigin() //允許任何來源的主機訪問
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials();//指定處理cookie
                });
            });
        }
View Code

首先要引用命名空間:

using Microsoft.AspNetCore.Cors;

然后在使用的Action上面增加:[EnableCors("any")] 

        [HttpGet("{id}")]
        [EnableCors("any")]
        public string Get(int id)
        {
            return "這是帶"+id+"的返回值";
        }

 注:也可以在控制器上使用,這樣當前控制器所有方法都支持跨域

Cookie的訪問:

    后台通過HttpContext上下文可以直接操作Cookie  :ControllerContext.HttpContext.Response.Cookies.Append("name", "內容");

     前台JQuery的ajax請求,需要攜帶withCredentials才會將cookie的值保存到客戶端

傳送門:

WebApi系列文章目錄介紹

 

  


免責聲明!

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



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