Post Multiple Parameters Without DTO Class(在不使用DTO类的情况下发布多个参数)
本文介绍了在不使用DTO类的情况下发布多个参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的Web项目上有一个调用API的操作
[HttpPost]
public async Task<IActionResult> ExpireSurvey(int id)
{
var token = await HttpContext.GetTokenAsync("access_token");
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
var path = "/api/forms/ExpireSurvey";
var url = Domain + path;
var data = JsonConvert.SerializeObject(id);
HttpContent httpContent = new StringContent(data, Encoding.UTF8, "application/json");
var response = await client.PutAsync(url, httpContent);
return Json(response);
}
}
在API项目中,它的接收方式如下:
[HttpPut]
public IActionResult ExpireSurvey([FromBody] int surveyId)
{
_repository.ExpireSurvey(surveyId, expiryDate);
return Ok();
}
这很好用--但是,假设我想传入一个int id和一个DateTime变量,我如何序列化它们并将它们都传递到HttpContent中?我可以使用DTO对象执行此操作,但当只有两个字段时,我不想设置DTO对象。
推荐答案
您可以像这样使用匿名类型
var x = new { id = 2, date = DateTime.Now };
var data = JsonConvert.SerializeObject(x);
接收数据时,只能有一个[FromBody]参数。因此,这不适用于接收多个参数(除非您可以将除一个参数外的所有参数都放入URL)。如果不想声明DTO,可以使用如下动态对象:
[HttpPost]
public void Post([FromBody] dynamic data)
{
Console.WriteLine(data.id);
Console.WriteLine(data.date);
}
不要过度使用匿名类型和动态变量。它们对于使用JSON非常方便,但您会失去所有类型检查,这是使C#真正易于使用的事情之一。
这篇关于在不使用DTO类的情况下发布多个参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:在不使用DTO类的情况下发布多个参数
基础教程推荐
猜你喜欢
- C# 从 List<List<int>> 中删除重 2022-01-01
- 当值可以是对象或空数组时反序列化 JSON 2022-01-01
- 如何使用 .Net 检查 Active Directory 服务器是否已启动并正在运行? 2022-01-01
- .NET SerialPort DataReceived 事件未触发 2022-01-01
- 我应该在后面的代码中直接使用 Linq To SQL 还是使 2022-01-01
- Azure Functions:CosmosDBTrigger 未在 Visual Studio 中触发 2022-01-01
- Moq It.Is<>不匹配 2022-01-01
- 禁止输入少量字符,例如'<'、'&a 2022-01-01
- WPF 模态进度窗口 2022-01-01
- 如果有人提交恶意软件Nuget包怎么办? 2022-01-01
