iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0
Modern Web

.NET教我做人系列 第 19

Day19 RESTful API

  • 分享至 

  • xImage
  •  

昨天我們講到了Swagger,這OpenApi幫助我們後端在開發上的用處,並且我們昨天也開了5支 API,但這5支 API 都沒有功能,所以今天就是要來介紹如何使用RESTful API的網路架構風格來達成CRUD的功能

一開始先說甚麼事CRUD,CRUD很值白就是新增 (Create)、刪除 (Delete)、查詢 (Read)和更新 (Update)的意思,在電腦程式語言中是一連串常見的動作行為,而其行為通常是為了針對某個特定資源所作出的舉動(例如:建立資料、讀取資料等)

RESTful 和CRUD的關係

我們知道RESTful 是一種網路架構風格,它使用 HTTP 請求來訪問和使用數據。該數據可用於 GET、PUT、POST 和 DELETE 等等其他類型,所以我們就可以用RESTful 的特性來達到CRUD的功能

CRUD的使用

這裡的話我們就拿昨天創好的UserController.cs的資料來作更改,在哪之前為了讓練習更實際話,我們先創一個Model的資料夾在專案下,並把User.cs的檔案放進去

格式應該會長這樣

接下來我們就先去改User.cs

public class User
    {
        [Required]
        public int Id { get; set; }

        [MaxLength(30)]
        public string Name { get; set; }

        [EmailAddress]
        public string Email { get; set; }

        [Range(0, 150)]
        public int Age { get; set; }

        [Phone]
        public string? Phone { get; set; }
    }

接下來我們現在class 去新增一個以User model的陣列

public static List<User> users = new List<User>();

Create

新增的話我們會遇到Post的方式來新增我們學生的資料

[HttpPost]
public ActionResult Post(User user)
{
    if (users == null)
    {
        return BadRequest();
    }
    User newUser = new User()
    {
        Id = user.Id,
        Name = user.Name,
        Email = user.Email,
        Phone = user.Phone,
        Age = user.Age,
    };
    users.Add(newUser);
    return Ok("Add Successful");
}

Read

這裡我是用了兩種GET的方式,但其中一是把所有的內容抓出來,另一種是把特定的id抓出來

[HttpGet]
public ActionResult Get()
{
    if (users == null)
    {
        return BadRequest();
    }
    return Ok(users);
}


[Route("{id}")]
[HttpGet]
public ActionResult<User> Get(int id)
{
    if (users == null)
    {
        return BadRequest();
    }
    User user = (User)users.FirstOrDefault(u => u.Id == id);
    return user;
}

Update

在我有印象的更新方式有兩種一種事PUT另一種事PATCH,這兩個差別就在於PUT 替換(新增或完整更新),PATCH 的話只會部分更新,大多數的人都是採用PUT的方式來作更新

 [HttpPut]
public ActionResult Put(User user)
{
    if (users == null)
    {
        return BadRequest();
    }
    User newUser = users.Where(u => u.Id == user.Id) ==null ? new User(): users.Where(u => u.Id == user.Id).First();
    newUser.Name = user.Name;
    newUser.Email = user.Email;
    newUser.Phone = user.Phone;
    newUser.Age = user.Age;
    return Ok("Updata Success");
}

Delete

刪除的話要先找到指定id的資料然後再透過Remove 的linq 方式作刪除

[HttpDelete]
public ActionResult Delete(int id)
{
    if (users == null)
    {
        return BadRequest();
    }
    var user = users.FirstOrDefault(u => u.Id == id);
    users.Remove(user);
    return Ok("Delete Success");
}

那麼沒意外我們今天的CRUD 就先練習到這裡,明天的話我們就會結合之前的DB來作練習,今天就鐵人賽就先到這裡啦~~~

參考資料:


上一篇
Day18 除了Postman我還有Swagger
下一篇
Day20 CURD結合DB
系列文
.NET教我做人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言