默認控制器說明
- 此檔案是個人經驗分享,希望能夠幫助到有需要的朋友,
- 如果存在錯誤,您就說一下,我改,
- Gitee代碼庫(分支
practice/01/框架生成的控制器): https://gitee.com/wosperry - 微軟檔案
如果是剛剛接觸DotnetCore,什么都還不清楚的情況,可以先模仿專案自動生成的WeatherForecastController添加自己的控制器,先寫一些Api介面嘗試呼叫一下,其他的東西都可以先不看,哪怕你把所有邏輯都寫在控制器(完全不建議),都是可以運行的,
路由
- 特性
[Route("")]- 可以添加給
Controller或者方法 - 引數:
- 引數內容即是路由
[controller]控制器名[action]方法名
當控制器名為XxxController方法名為Hahaha()時,路由是\Xxx\Hahaha
- 可以添加給
- Http方法的特性:
[HttpGet()][HttpPost()]等- 僅可以添加給
方法 - 引數內容即是路由
- 僅可以添加給
WebApi框架專案默認控制器說明(專案生成檔案)
// Api控制器特性:默認HttpPost時,引數從Body獲取,等價于不添加時在Api引數標識[FromBody]特性
[ApiController]
// 表示一級路由是 \WeatherForecast
// 一般不直接使用 [controller]
[Route("[controller]")]
// 控制器基類 ControllerBase,繼承此類后會在程式運行時被框架發現,提供一些控制器常用方法
// 如 BadRequest(string message), Ok(string message)等,具體可F12查看
public class WeatherForecastController: ControllerBase
{
// 說明:默認專案只是個例子,可以參考,不想看也沒關系
// 這是一個欄位:靜態 私有 只讀,字串陣列,用于后面隨機展示
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
// 這是一個欄位:一個型別引數為當前型別的一個日志服務,由構造方法的注入得到實體
private readonly ILogger<WeatherForecastController> _logger;
// 這個類的構造方法
// 注入說明:
// 1. 此構造方法不在任何地方被手動呼叫
// 2. 類的構造方法由框架自動發現,并使用最多引數的構造方法進行構造,在構造前會遞回構造出所有引數的實體
// 3. 引數可以是非常多,需要用到什么服務,就在引數添加
// 具體可搜索 IOC控制反轉、DI依賴注入
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
// 由于作用域關系,建構式結束后,會被系統GC回收
// 保存到類的欄位中,即可在類的整個生命周期中被保留使用
_logger = logger;
}
// Http方法,標識了HttpGet特性時,只接收HttpGet請求,如果Http方法不匹配則不接受
// HttpGet特性可以接受一個字串引數,此引數作用與[Route()]相同,會被認為是二級路由
[HttpGet]
// 以下是一個普通方法,回傳的結果會被自動轉成Json格式給到介面消費者
public IEnumerable<WeatherForecast> Get()
{
// 一個亂數類
var rng = new Random();
// Enumerable.Range(1, 5) :從1開始,獲取5個整數(引數介紹可F12)
// .Select() :投影方法,等同于寫了一個foreach方法拼接 List<WeatherForecast> 型別結果
// 不同的是Select是一個迭代器,性能略好于自行遍歷,回傳值型別為IEnumerable,
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
// 上述內容執行結果簡單寫法:
/*
public IEnumerable<WeatherForecast> GetWeatherForecasts()
{
var random = new Random();
var list = new List<WeatherForecast>();
for (int index = 1;index <= 5; index++)
{
list.Add(new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = random.Next(-20, 55),
Summary = Summaries[random.Next(Summaries.Length)]
});
}
return list;
}
*/
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/341659.html
標籤:.NET技术
