iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
自我挑戰組

C# 從入門到WebApi系列 第 23

[DAY23] 來做做自己的API SERVER吧

  • 分享至 

  • xImage
  •  

前言

總覺得好幾天沒有真正CODING 了
都在介紹一些工具阿 觀念阿 看得都快要睡著了
(雖然我覺得這些才是精華)

本來想說今天繼續講解前後端分離的概念
廢話不多說
讓我們正式開始吧

動手做做

首先打開前幾天創立的專案(都長灰塵了)
忘記的可以參考[Day20] 第一支WebApi
然後開啟方案總管
將WeatherForecast.cs
跟Controller 資料夾中的WeatherForecastController.cs
刪除~~~

接這我們右鍵點選專案->加入->新增資料夾
資料夾名稱叫做Model
我們會把所有Model的資料放在裡面
https://ithelp.ithome.com.tw/upload/images/20200923/20109549JYwU69ptm1.png

接著我們在Model中加入
Product.cs

namespace MyFirstApi.Model
{
    public class Product
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Origin { get; set; }
        public int Price { get; set; }
    }
}

接著我們來添加控制器
右鍵點擊Controller資料夾->加入->控制器
https://ithelp.ithome.com.tw/upload/images/20200923/20109549wBtDmomb9h.png

選擇空白的API控制器
https://ithelp.ithome.com.tw/upload/images/20200923/20109549B4Vq4XYuat.png

將其命名為ProductController.cs
注意控制器要以Controller為結尾
我今天有另一個控制器是處理訂單的那就是OrderController.cs

https://ithelp.ithome.com.tw/upload/images/20200923/20109549cDJJccEBnE.png

打開ProductController.cs
我們可以看見如下的程式碼

namespace MyFirstApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ProductController : ControllerBase
    {
    }
}

稍微解釋下

[Route(api/[controller])]
這行指的是 你的網址,Ex:127.0.0.1
後面加上api/你的Controller名稱
的請求都會被導向這個Controller中
Ex:127.0.0.1/api/product
這個請求就會被導進ProductController中

[ApiController]
一個告訴底層他是一個Controller 的Attribute
(其實我對他不熟><)

在.NetCore 中 基本上Controller 都會繼承至 ControllerBase

先說接著這幾天所做的DEMO
都不是一個好的示範
Controller層並不該包含邏輯
(但是我懶惰)

首先我們在ProductController.cs中加入商品列表

ProductController.cs

namespace MyFirstApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ProductController : ControllerBase
    {
        private List<Product> products = new List<Product>
        {
            new Product{Id = "D001", Name = "珍珠奶茶",Origin = "Taiwan",Price = 50},
            new Product{Id = "F001", Name = "香蕉",Origin = "Taiwan",Price = 20},
            new Product { Id = "F002", Name = "蘋果", Origin = "Japan", Price = 50 },
            new Product { Id = "B001", Name = "工程師的自我修養", Origin = "US", Price = 200 }
        };

        private List<Product> GetProductList()
        {
            return products;
        }
    }
}

我們再來定義一個public method
他會返回商品列表

ProductController.cs

[HttpGet]
[Route("getProduct")]
public List<Product> GetProducts()
{
    return GetProductList();
}

[HttpGet]
這個標籤表示這個方法要用HttpGet的方法取得

[Route("getProduct")]
表示getProduct會轉進這個方法處理
EX:127.0.0.1/api/product/getProduct

我們執行我們的程式
會出現這個畫面
https://ithelp.ithome.com.tw/upload/images/20200923/20109549YVVlI7PJAc.png

因為WeatherForecastController 被我們刪掉了
所以找不到頁面是正常的
關於網址列
localhost指的是本機的網址也就是127.0.0.1
:5001是Port號 每個專案預設不同 總之先不用動他

我們把網址列改成https://localhost:5001/api/product/getProduct
其中5001請改成你自己的port號

就能看見
https://ithelp.ithome.com.tw/upload/images/20200923/20109549tkSomjtjyd.png

明天再來介紹POST


上一篇
[Day22] Http簡介 跟 PostMan
下一篇
[Day24] 動手做做 API 之 POST(表單等等)篇
系列文
C# 從入門到WebApi30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言