You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

281 lines
8.0 KiB
C#

9 months ago
using System.Net;
using HttpClientStudy.Model;
9 months ago
using HttpClientStudy.Service;
9 months ago
using Microsoft.AspNetCore.Http;
9 months ago
using Microsoft.AspNetCore.Mvc;
9 months ago
using Microsoft.OpenApi.Validations;
9 months ago
namespace HttpClientStudy.WebApp.Controllers
{
/// <summary>
/// 普通(简单) 控制器
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class NormalController : ControllerBase
{
private ILogger<SimpleController> _logger;
9 months ago
private AccountService _accountService;
9 months ago
/// <summary>
/// 构造
/// </summary>
9 months ago
public NormalController(ILogger<SimpleController> logger, AccountService accountService)
9 months ago
{
_logger = logger;
9 months ago
_accountService = accountService;
9 months ago
}
9 months ago
#region GET
9 months ago
/// <summary>
9 months ago
/// 获取所有账号
/// (无参数)
9 months ago
/// </summary>
/// <returns></returns>
[HttpGet]
9 months ago
public IActionResult GetAllAccounts()
9 months ago
{
9 months ago
var accounts = _accountService.GetAllAccounts();
9 months ago
var result = BaseResultUtil.Success(accounts);
return Ok(result);
9 months ago
}
9 months ago
/// <summary>
9 months ago
/// 查询账号
9 months ago
/// (默认方式参数:URL传参)
9 months ago
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult GetAccount(int id)
{
var accounts = _accountService.GetAllAccounts();
var account = accounts.FirstOrDefault(a => a.Id == id);
var result = BaseResultUtil.Success(account);
return Ok(result);
}
9 months ago
/// <summary>
/// 查询账号
9 months ago
/// (路由参数)
9 months ago
/// </summary>
/// <returns></returns>
[HttpGet]
9 months ago
[Route("{name}")]
public IActionResult GetAccount([FromRoute] string name)
9 months ago
{
9 months ago
var accounts = _accountService.GetAllAccounts();
var account = accounts.FirstOrDefault(a => a.Name == name);
var result = BaseResultUtil.Success(account);
9 months ago
return Ok(result);
}
9 months ago
/// <summary>
9 months ago
/// 查询账号
9 months ago
/// (中文参数)
9 months ago
/// </summary>
/// <returns></returns>
[HttpGet]
9 months ago
public IActionResult GetAccountByName(string ChineseName, [FromQuery]string ChineseName2)
9 months ago
{
9 months ago
var accounts = _accountService
.GetAllAccounts()
.Where(a => a.Name == ChineseName || a.Name == ChineseName2)
.ToList();
9 months ago
var result = BaseResultUtil.Success(accounts);
return Ok(result);
}
/// <summary>
9 months ago
/// 查询账号
9 months ago
/// (查询参数)
/// </summary>
/// <returns></returns>
[HttpGet]
9 months ago
public IActionResult GetAccountByRole([FromQuery] string role)
9 months ago
{
var accounts = _accountService.GetAllAccounts();
accounts = accounts.Where(accounts => accounts.Role == role).ToList();
var result = BaseResultUtil.Success(accounts);
return Ok(result);
}
9 months ago
/// <summary>
/// 查询账号
9 months ago
/// (请求头参数:中文,客户端Url编码后请求此处Url解码后使用)
9 months ago
/// </summary>
/// <returns></returns>
[HttpGet]
9 months ago
public IActionResult GetAccountFromHeader([FromHeader] string name)
9 months ago
{
9 months ago
//先Url解码
var decodeName = WebUtility.UrlDecode(name);
var account = _accountService.GetAllAccounts().Single(i => i.Name == decodeName);
9 months ago
var result = BaseResultUtil.Success(account);
return Ok(result);
}
9 months ago
/// <summary>
9 months ago
/// 查询账号
9 months ago
/// (服务注入参数)
/// </summary>
/// <returns></returns>
[HttpGet]
9 months ago
public IActionResult GetAccountFromServices([FromServices] Account account)
9 months ago
{
9 months ago
var result = BaseResultUtil.Success(account);
9 months ago
return Ok(result);
}
9 months ago
#endregion
9 months ago
9 months ago
#region PUT
9 months ago
/// <summary>
/// Put请求 示例
/// </summary>
/// <returns></returns>
[HttpPut]
public IActionResult PutDemo(int id)
{
var accounts = _accountService.GetAllAccounts();
var account = accounts.FirstOrDefault(a => a.Id == id);
var result = BaseResultUtil.Success(account);
return Ok(result);
}
9 months ago
#endregion
9 months ago
9 months ago
#region HEAD
9 months ago
/// <summary>
/// Head请求 示例
/// </summary>
/// <returns></returns>
[HttpHead]
public IActionResult HeadDemo(int id)
{
var accounts = _accountService.GetAllAccounts();
var account = accounts.FirstOrDefault(a => a.Id == id);
var result = BaseResultUtil.Success(account);
return Ok(result);
}
9 months ago
#endregion
#region POST
/// <summary>
/// 简单POST请求
/// (无请求体数据)
/// </summary>
/// <returns></returns>
[HttpPost]
public IActionResult PostSimple()
{
BaseResult<string> result = BaseResultUtil.Success<string>("简单POST请求");
//这样丢失内容协商只会返回JSON数据
return new JsonResult(result);
}
/// <summary>
/// POST 请求
/// 创建新账号(请求体数据)
/// </summary>
/// <returns></returns>
[HttpPost]
public IActionResult PostCreate([FromBody]Account account)
{
//注意:参数加[FromBody]特性,在有服务注入对象时,默认使用服务注入的对象而不是请求体
CreatedAtActionResult? result = new CreatedAtActionResult("GetAccount","Normal",null,account);
return Ok(result);
}
/// <summary>
/// POST 请求
/// 更新账号(请求体数据)
/// </summary>
/// <returns></returns>
[HttpPost]
public IActionResult PostUpdate([FromBody] Account account)
{
var result = BaseResultUtil.Success<Account>(account);
return Ok(result);
}
/// <summary>
/// POST 请求
/// 删除账号(查询参数)
/// </summary>
/// <returns></returns>
[HttpPost]
public IActionResult PostRemove([FromQuery] int id)
{
var account = _accountService.GetAllAccounts().FirstOrDefault(a => a.Id == id);
var result = BaseResultUtil.Success<Account>(account);
return Ok(result);
}
#endregion
#region DELETE
/// <summary>
/// DELETE 请求
/// 删除账号(查询参数)
/// </summary>
/// <returns></returns>
9 months ago
[HttpDelete]
9 months ago
public IActionResult Delete([FromQuery] int id)
{
var account = _accountService.GetAllAccounts().FirstOrDefault(a => a.Id == id);
9 months ago
var result = BaseResultUtil.Success(account?.Id);
9 months ago
return Ok(result);
}
/// <summary>
/// DELETE 请求
9 months ago
/// 删除数据(JsonBodyData)
9 months ago
/// </summary>
/// <returns></returns>
9 months ago
[HttpDelete]
public IActionResult DeleteForJsonData([FromBody] Account account)
9 months ago
{
var result = BaseResultUtil.Success<Account>(account);
return Ok(result);
}
#endregion
#region OPTIONS
9 months ago
/// <summary>
/// 简单OPTIONS请求
/// (无请求体数据)
/// </summary>
/// <returns></returns>
[HttpOptions]
[HttpPost]
public IActionResult OptionsSimple()
{
BaseResult<string> result = BaseResultUtil.Success<string>("简单OPTIONS请求");
//这样丢失内容协商只会返回JSON数据
return new JsonResult(result);
}
9 months ago
#endregion
#region PATCH
#endregion
#region TRACE
#endregion
#region CONNECT
#endregion
9 months ago
}
}