iT邦幫忙

7

[C#][ASP.NET] Web API 開發心得 (1) - WebForm 搭配 Web API

目前開發還是習慣 WebForm,不過體驗過 MVC 各種強大功能後,例: Router、Action Filter、Model Binding,不想走回頭路,所以決定在專案內導入 Web API 搭配 WebForm 使用。

新增 WebForm 網站並加入 Web API

1. 新增空白網站

點選 Visual Studio 右上角,檔案 > 新增 > 網站或專案,這裡網站或專案都可以,然後選擇 ASP.NET 空白網站

https://ithelp.ithome.com.tw/upload/images/20180311/20106865fMpC4lXvJd.jpg

2. 儲存專案 .sln 檔

網站建立完成後,點選全部儲存,然後選擇外層資料夾儲存 .sln 專案檔。

https://ithelp.ithome.com.tw/upload/images/20180311/20106865x2i2lFi1pd.jpg

3. 將網站架設在 IIS 上

因為新增空白網站時,選擇的是網站,網站執行必需架在 IIS 上,如果選擇專案就不用,可以直接用 Visual Studio 執行。

架設網站步驟,開啟 IIS 管理員,在 Default Web Site 上按右鍵選擇新增應用程式,接著選擇網站路徑。

https://ithelp.ithome.com.tw/upload/images/20180311/20106865GZQmPkFQeP.jpg

4. 加入組件參考

開啟 Nuget 加入下列組件:

  • Microsoft.AspNet.WebApi
  • Microsoft.AspNet.WebApi.Owin
  • Microsoft.Owin.Host.SystemWeb

5. 新增 App_Code 資料夾,並加入 Startup.cs

我們所有的.cs程式檔,都會放在 App_Code 資料夾內,新增資料夾後加入 Startup.cs。

Startup.cs 程式碼:

[assembly: OwinStartup(typeof(Core.Startup))]

namespace Core
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            
            app.UseWebApi(config);
        }
    }
}

6. 新增 Web API Controller

在 App_Code 資料夾內,新增 Api 資料夾用來放 Controller,接著加入 TestController 測試 Web API 有沒有正確運行。

TestController 程式碼:

namespace Api
{
    [RoutePrefix("api/test")]
    public class TestController : ApiController
    {
        //測試API
        [HttpGet]
        [Route("live")]
        public bool Live()
        {
            return true;
        }
    }
}

測試:

在瀏覽器輸入 api 網址後,正確顯示 api 的回傳值。

https://ithelp.ithome.com.tw/upload/images/20180311/20106865Ii8t3OUut8.jpg

專案結構:

https://ithelp.ithome.com.tw/upload/images/20180819/20106865SoLKzDijyB.jpg

結語

接下來會陸續分享 Web API 的使用心得,如有需要改進的地方,再麻煩各位大大指點。


※ 更新 2019/12/14

這系列介紹的是 Web Api 2 的用法,需要 .NET Framework 4.5 以上的版本

如果還停留在 .NET Framework 4.0 的朋友,可以參考下面這篇改用 Web Api 1,雖然功能沒有後面的版本多,但總體來說差異不大。

連結: [C#][ASP.NET] 如何在 .NET Framework 4.0 加入 Web Api


參考文章

[ASP.NET] Web API in Web Form
使用 OWIN 自我裝載 ASP.NET Web API 2

系列文章

[C#][ASP.NET] Web API 開發心得 (1) - WebForm 搭配 Web API
[C#][ASP.NET] Web API 開發心得 (2) - 網站的基本架構
[C#][ASP.NET] Web API 開發心得 (3) - 統一回應 JSON 格式的資料
[C#][ASP.NET] Web API 開發心得 (4) - 使用 FormsAuthentication 進行 API 授權驗證
[C#][ASP.NET] Web API 開發心得 (5) - 使用 Filter 統一 API 的回傳格式和例外處理
[C#][ASP.NET] Web API 開發心得 (6) - 輕量級的 ORM 工具 Dapper + Slapper.AutoMapper
[C#][ASP.NET] Web API 開發心得 (7) - 使用 Token 進行 API 授權驗證


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
神Q超人
iT邦研究生 5 級 ‧ 2018-03-11 22:35:24

webAPI可以直接取代掉ashx哦/images/emoticon/emoticon19.gif

哈哈哈,可以啊,
現在我盡量不用 ashx,
Web API 的功能比 ashx 更完整強大,
且可以和 WebForm 共存,
由此慢慢轉 MVC 是不錯的選擇。
/images/emoticon/emoticon39.gif

神Q超人 iT邦研究生 5 級 ‧ 2018-03-13 19:35:53 檢舉

哇真假,那我應該也要來學個幾招,哈哈/images/emoticon/emoticon74.gif

我要留言

立即登入留言