iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
Cloud Native

.NET雲端魔法尊者之路系列 第 13

2023-鐵人賽.NET雲端魔法尊者之路 Day13 .NET篇 實戰 .NET Core GET & POST

  • 分享至 

  • xImage
  •  

大家好,昨天介紹玩了甚麼是Swagger以及 RESTful API,今天就要來實際來玩看看囉 !

實戰準備

  • 首先打開方案總管的 Controllers 中的檔案
    https://ithelp.ithome.com.tw/upload/images/20230928/20151015Nky5WQHsbu.png
  • 這裡就是之前打開 Swagger 出現的 API。
    https://ithelp.ithome.com.tw/upload/images/20230928/20151015TnNQNrqfeF.png
  • 這支 API 的功能又是甚麼呢 ?
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
    return Enumerable.Range(1, 5).Select(index => new WeatherForecast
    {
        Date = DateTime.Now.AddDays(index),
        TemperatureC = Random.Shared.Next(-20, 55),
        Summary = Summaries[Random.Shared.Next(Summaries.Length)]
    })
    .ToArray();
}

這段程式碼是一個C# ASP .NET Core的控制器方法,使用HTTP的GET請求方式。它回傳一個包含天氣預報的集合,這個集合包含了5個WeatherForecast物件。

GET 實作

using Microsoft.AspNetCore.Mvc;

namespace MyApi.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class MyController : ControllerBase
    {
        [HttpGet]
        public IActionResult Get()
        {
            try
            {
                // 在這裡處理 GET 請求的邏輯
                var data = new { message = "GET 請求成功" };
                return Ok(data);
            }
            catch (Exception ex)
            {
                return StatusCode(500, $"Internal server error: {ex.Message}");
            }
        }
    }
}

這是一個簡單的GET範例。

GET是甚麼?

向指定的資源發出「顯示」請求。使用GET方法應該只用在讀取資料,而不應當被用於產生「副作用」的操作中,例如在網路應用程式中。

測試方法

  • 打開Swagger點 Try it out
    https://ithelp.ithome.com.tw/upload/images/20230928/20151015Gxx2aJWdie.png

  • 按下執行
    https://ithelp.ithome.com.tw/upload/images/20230928/20151015ZiivJJA6d9.png

  • 察看結果
    https://ithelp.ithome.com.tw/upload/images/20230928/20151015dPSR4ZHXNW.png

POST

using Microsoft.AspNetCore.Mvc;

namespace MyApi.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class MyController : ControllerBase
    {
        [HttpPost]
        public IActionResult Post([FromBody] MyDataModel data)
        {
            try
            {
                return Ok(new { message = "POST 請求成功" });
            }
            catch (Exception ex)
            {
                return StatusCode(500, $"Internal server error: {ex.Message}");
            }
        }
    }

    public class MyDataModel
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

這是一個簡單的POST範例。

POST是甚麼?

向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)。資料被包含在請求本文中。

程式碼中的 MyDataModel 是甚麼 ?

public class MyDataModel
{
    public string Name { get; set; }
    public int Age { get; set; }
}

定義資料模型,該模型可以用來接收 HTTP POST 請求中的 JSON 資料。

測試方法

  • 點開 Try it out
    https://ithelp.ithome.com.tw/upload/images/20230928/20151015CYVedFVyqy.png

  • 你可以在這裡編輯json
    https://ithelp.ithome.com.tw/upload/images/20230928/20151015noW4dBlGz3.png

  • 按下執行
    https://ithelp.ithome.com.tw/upload/images/20230928/20151015JZDFWsrEhi.png

  • 察看結果
    https://ithelp.ithome.com.tw/upload/images/20230928/20151015mQ17jK7s11.png

結尾

今天介紹了GET 與 POST 關於其他的HTTP的請求方法會在介紹完資料庫以後再介紹喔 ! 那今天就到這裡了 掰掰 ~

參考資料

https://zh.wikipedia.org/zh-tw/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE


上一篇
2023-鐵人賽.NET雲端魔法尊者之路 Day12 .NET篇 開發小助手 Swagger 以及 API 風格 RESTful API
下一篇
2023-鐵人賽.NET雲端魔法尊者之路 Day14 .NET篇 SQL Server介紹
系列文
.NET雲端魔法尊者之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言