using System.ComponentModel.DataAnnotations; using System.Text; using HttpClientStudy.WebApp.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace HttpClientStudy.WebApp.Controllers { /// /// 高级Post请求 控制器 /// [Route("api/[controller]/[action]")] [ApiController] public class AdvancedPostController : ControllerBase { private ILogger _logger; /// /// 构造 /// public AdvancedPostController(ILogger logger) { _logger = logger; } #region 接收请求体数据 /// /// 接收请求体数据 /// 普通文本:直接从原始请求体获取。不能使用 [FromBody]绑定特性,因为绑定是针对 Form表单、Json格式的特殊数据。 /// /// /// 返回请求体原始数据 /// [HttpPost] public async Task 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); } /// /// 接收请求体数据 /// 表单数据 /// /// [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); } /// /// 接收请求体数据 /// 编码后的表单数据 /// /// [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); } /// /// 接收请求体数据 /// json 数据 /// /// [HttpPost] public IActionResult JsonData([FromBody]AdvancedGetModel? vm) { var result = BaseResultUtil.Success(vm); return Ok(result); } #endregion } }