[英]Postman Testing send string to Web Api accepting string is null
我一直在使用 Postman 测试所有的 Get、Create、Update 方法,其中 Get 没有传递任何内容。 Create 和 Update 传入原始 json,Activity object 具有几个与 C# 匹配的属性 class
所以这个创建和更新的签名工作正常
[HttpPost]
public IHttpActionResult UpdateActivity(Activity activity)
以上与 Postman 一起使用,传递 JSON 内容类型和所有属性。 我在其他项目上做过这个。
然而
我试图简单地传入一个字符串,无论如何它都是 null
public IHttpActionResult DeleteActivity([FromBody]string Id)
{
// delete
var del = ActivityService.DeleteActivity(Id);
return Ok(del);
}
Postman 我尝试了很多方法
http://localhost:49810/api/activityapi/deleteactivity
我已经尝试了很多基于博客和谷歌搜索的方法,一个这样的例子
{ "Id" = "5808786fa3e9ec79546b3c71" }
我知道这是一个较旧的问题,但我想帮助那些可能有类似问题的人,因为我能够解决这个问题。
在 WebAPI 控制器中,我的方法设置为
[HttpPost]
public IHttpActionResult Create([FromBody] int eventId)
{
....
}
为了让它在 Postman 中正确测试,你必须:在 body 中,设置为 raw,确保 JSON (application/json) 被设置,然后只添加像 2 这样的值......不是像 { "eventId":2这是正确的 JSON 只是值,然后它将起作用。
因此,在原始海报的情况下,在 Postman 中,如果您将 Body 设置为 raw、JSON (application/json) 然后将“5808786fa3e9ec79546b3c71”作为值,它将起作用。
在 Postman 中,确保将正文设置为 raw 并选择 json,并在正文中将“您的字符串”写在引号中。 不要用 {} 来包围它,因为那是为了制作一个复杂的对象
在正文中尝试以下内容,内容类型为 application/json
{ "5808786fa3e9ec79546b3c71" }
当您像这样指定它时,它将尝试反序列化为具有 Id 属性的复杂类型
{ "Id" : "5808786fa3e9ec79546b3c71" }
您的有效负载无效。
改变-->
{ "Id" = "5808786fa3e9ec79546b3c71" }
到-->
{ "Id" : "5808786fa3e9ec79546b3c71" }
老问题,但对于那些仍然想知道的人,我建议将您的字符串作为查询参数发送。 以这样的方法为例:
[AllowAnonymous]
[HttpGet("resendEmailConfirmtionLink")]
public async Task<IActionResult> ResendEmailConfirmationLink(string email)
{
var user = await _userManager.FindByEmailAsync(email);
if (user == null) return Unauthorized();
var origin = Request.Headers["origin"];
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
token = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(token));
var verifyUrl = $"{origin}/verifyEmail?token={token}&email={user.Email}";
var message = $"<p>Please click the below link to verify your email address:</p><p><a href='{verifyUrl}'>Click to verify email</a></p>";
await _emailSender.SendEmailAsync(user.Email, "Please verify email", message);
return Ok("Email verification link resent");
}
此方法需要一个名为 email 的字符串的键值对。 您可以像“http://localhost:5000/api/account/verifyEmail?email=myemail@test.com”一样发送您的请求,或者在 Postman 中将其添加为这样的参数: postman query params
[HttpPost]
public IHttpActionResult Create(int eventId)
{
....
}
使用表单数据而不是 raw-json
Key - eventId
Value - "5808786fa3e9ec79546b3c71"
这对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.