.Net Core Web Api_筆記02_HTTP資源操作模式GET
在上一篇介紹中我們得知
.net core mvc 跟.net core web api 在專案C#語法跟預設架構差異
得知.net core web api 其實只著重於資料的請求回傳不涉及到View檢視跟View Model相關範疇
因此預設不會幫我們先準備Views跟Models的目錄
基本上於.net core mvc透過GET跟POST就能滿足一般很大宗的CRUD需求
但在web api這邊則是分得更細
今天要介紹的部分是有關於HTTP資源操作共分為如下幾種模式
HttpGet:負責獲得資源
HttpPost:負責資料添加
HttpPut:負責更新資料(約定俗成但也可藉由POST),常用在更新整個資源(比方:整個特定model entity)
HttpDelete:負責刪除資料
HttpHead:獲取HTTP head部分的資訊(通常用void,不需要回傳型態)
HttpOptions:用於獲得自URI的資源在Request/Response過程可使用的功能選項。(可對ajax跨域請求做一些提前檢查),跟HTTP Head有點類似但差異在於會回傳Body內文。
HttpPatch:負責更新資料,常用在更新部分資源(比方:只更新特定model enity中的某些property),使用上ContentType發出請求必須用application/json-patch+json方式而非用form-data(後端會收不到)。
我們上一篇是用範例來測試跑api
這裡我自己額外重新建立一個新的api controller
對Controllers 目錄右鍵新增API控制器
點選加入
命名StudentController.cs
新增一個function
若沒特別加特定屬性標籤修飾預設採用HttpGet
在此還是將其標註起來
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace MyApiTest1.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class StudentController : ControllerBase
{
[HttpGet]
public string Show()
{
return "Hi 你好";
}
}
}
竟然可直接呼叫的到Show方法
法2.從[HttpGet("[action]")] 來調整
法3.從[HttpGet("路由任意名稱")] 來設置路由任意名稱(不一定要跟action方法名一致)
比方我這裡設置[HttpGet("Display")]
大小寫沒差
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace MyApiTest1.Models
{
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
}
}
在StudentController.cs中新增一個action method 如下
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MyApiTest1.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace MyApiTest1.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class StudentController : ControllerBase
{
[HttpGet("Display")]
public string Show()
{
return "Hi 你好";
}
[HttpGet("GetPerson")]
public ActionResult<Person> GetPerson()
{
var p = new Person
{
Id = 1,
Name = "Jason",
Age = 27,
Sex = "man"
};
return p;
}
}
}
呼叫觀看結果就會看到被自動序列化為 json格式
而這是單一個物件回傳
可能物件List的時候
Action Method設計可以類似如下
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MyApiTest1.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace MyApiTest1.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class StudentController : ControllerBase
{
[HttpGet("Display")]
public string Show()
{
return "Hi 你好";
}
[HttpGet("GetPerson")]
public ActionResult<Person> GetPerson()
{
var p = new Person
{
Id = 1,
Name = "Jason",
Age = 27,
Sex = "man"
};
return p;
}
[HttpGet("GetPersons")]
public ActionResult<List<Person>> GetPersons()
{
List<Person> lsPersons = new List<Person>()
{
new Person(){Id=1,Name="Amy",Age=22,Sex="woman"},
new Person(){Id=2,Name="Jessica",Age=25,Sex="woman"},
new Person(){Id=3,Name="Banson",Age=24,Sex="man"}
};
return lsPersons;
}
}
}
呼叫觀看結果就會看到被自動序列化為 json格式而且是中括號包起來的陣列型態
以上是針對HttpGet較常見的處裡也簡單帶一些路由模板概念
留言
張貼留言