using System.ComponentModel.DataAnnotations; using System.Text; using HttpClientStudy.WebApp.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace HttpClientStudy.WebApp.Controllers { /// <summary> /// 高级Post请求 控制器 /// </summary> [Route("api/[controller]/[action]")] [ApiController] public class AdvancedPostController : ControllerBase { private ILogger<AdvancedPostController> _logger; /// <summary> /// 构造 /// </summary> public AdvancedPostController(ILogger<AdvancedPostController> logger) { _logger = logger; } #region 接收请求体数据 /// <summary> /// 接收请求体数据 /// 普通文本:直接从原始请求体获取。不能使用 [FromBody]绑定特性,因为绑定是针对 Form表单、Json格式的特殊数据。 /// </summary> /// <returns> /// 返回请求体原始数据 /// </returns> [HttpPost] public async Task<IActionResult> TextData() { string content = "请求体没有数据"; if (Request.ContentLength>0) { byte[] bytes = new byte[(int)Request.ContentLength]; await Request.Body.ReadAsync(bytes); content = UnicodeEncoding.UTF8.GetString(bytes); } var result = BaseResultUtil.Success(content); return Ok(result); } /// <summary> /// 接收请求体数据 /// 表单数据 /// </summary> /// <returns></returns> [HttpPost] public IActionResult FormData([FromForm,Required]int id, [FromForm,Required]string name) { var paras = $"{nameof(id)}={id}&{nameof(name)}={name}"; var result = BaseResultUtil.Success(paras); return Ok(result); } /// <summary> /// 接收请求体数据 /// 编码后的表单数据 /// </summary> /// <returns></returns> [HttpPost] public IActionResult FormUrlEncodedData([FromForm, Required] int id, [FromForm, Required] string name) { var paras = $"{nameof(id)}={id}&{nameof(name)}={name}"; var result = BaseResultUtil.Success(paras); return Ok(result); } /// <summary> /// 接收请求体数据 /// json 数据 /// </summary> /// <returns></returns> [HttpPost] public IActionResult JsonData([FromBody]AdvancedGetModel? vm) { var result = BaseResultUtil.Success(vm); return Ok(result); } #endregion } }