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
}
}