2 回答
TA贡献1776条经验 获得超12个赞
尝试修改,为API创建一个带有数据属性的实体类:
public class Data
{
public string email {get;set;}
public string subject {get;set;}
public string message {get;set;}
}
现在更改 API 服务如下:
[HttpPost]
public async Task<IActionResult> SendEmailAsync([FromBody] Data d)
{
await _emailService.SendEmail(d.email, d.subject, d.message);
return Ok();
}
现在您的邮递员服务将按预期工作,从 Request Body
编辑 1
以下是其他选项,以防您想使用查询字符串发送数据:
public async Task<string> SendEmailAsync(string email, string subject, string message) 或者
public async Task<string> SendEmailAsync([FromUri]Data d)
在上述两种情况下,以下查询都有效:
https://localhost:5001/api/send-email?subject=Get Medicine&email=suhomlin.eugene93@gmail.com
尽管第一个具有优先级,请注意,我没有在参数中传递消息,因为它在原始查询和顺序或参数中为 null 可以是任何内容。
正如讨论中所建议的,如果Data没有明确限定,那么它期望 Json 数据作为 Http Request Body
TA贡献1811条经验 获得超6个赞
我认为 POST 请求的绑定方式与您期望默认绑定 GET 请求的方式不同。您可以为此做两件事:
1)创建一个请求对象而不是3个字符串
public class SendEmailRequest
{
public string Email {get; set;}
...
}
2)按照评论中的建议执行 FromBody
我建议前者,我认为这是一种更简洁的方式,我在我的应用程序中使用了这种方法。
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报