来自 API 补丁方法的错误请求 400 returns
Bad request 400 returns from API Patch method
我正在使用 .net 核心网络 api。在我的 API 控制器 class 中有 PATCH
方法如下,
[HttpPatch("updateMessageTemplate/{templateId}")]
public IActionResult UpdateMessageTemplate([FromHeader] int tenantId, int templateId,[FromBody] testClass msg)
{
try
{
//Some implementation is here
return Accepted();
}
catch
{
return StatusCode(500);
}
}
testClass
如下,
public class testClass
{
public string body { get; set; }
}
我从邮递员那里调用了 API,它的 returns 400 BadRequest。
我在 Controller 方法中放置了断点,但它没有命中。在我从没有 return 400
的方法参数断点中删除 [FromBody] testClass msg
之后。为什么当我使用 [FromBody] testClass msg
时它的 returns 400?以及如何从 HTTP 客户端调用此控制器方法?
我试过了,它也是 returns 400 BadRequest
string serviceUrl = string.Format("{0}/notification/updateMessageTemplate/{1}", ConfigurationManager.AppSettings["LtApiUrl"], templateID);
string json = "[{\"body\":\"sample text\"}]";
HttpClient client = new HttpClient();
HttpMethod method = new HttpMethod("PATCH");
HttpRequestMessage message = new HttpRequestMessage(method, serviceUrl);
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("tenantId", tenantId.ToString());
client.DefaultRequestHeaders.Add("Authorization", string.Format("bearer {0}", token));
message.Content = content;
var response = client.SendAsync(message).Result;
return response.StatusCode.ToString();
我该如何解决这个问题?请帮我。我删除了之前的问题,这是我真正的问题
更新:
我将邮递员请求更改为。
在那之后它的作品。但是当我通过 http 客户端代码调用它时,它提供了 400 BadRequest
。如何通过 http client
提供 JSON body 正确的方式
你能试试这个吗?
[HttpPatch("updateMessageTemplate/{templateId}")]
public IActionResult UpdateMessageTemplate([FromHeader] int tenantId, int templateId,
[FromBody] JsonPatchDocument<testMsg> msg)
{
try
{
//Some implementation is here
return Accepted();
}
catch
{
return StatusCode(500);
}
}
如果您使用 FromBody
,您需要使用 json 而非表单 data.You 发送请求,可以像下面这样更改您的邮递员:
1.change ContentType 为 application/json
:
2.change Body to raw 并选择样式 JSON:
更新:
您需要像下面这样更改您的 json:
string json = "{\"body\":\"sample text\"}";
我正在使用 .net 核心网络 api。在我的 API 控制器 class 中有 PATCH
方法如下,
[HttpPatch("updateMessageTemplate/{templateId}")]
public IActionResult UpdateMessageTemplate([FromHeader] int tenantId, int templateId,[FromBody] testClass msg)
{
try
{
//Some implementation is here
return Accepted();
}
catch
{
return StatusCode(500);
}
}
testClass
如下,
public class testClass
{
public string body { get; set; }
}
我从邮递员那里调用了 API,它的 returns 400 BadRequest。
我在 Controller 方法中放置了断点,但它没有命中。在我从没有 return 400
的方法参数断点中删除 [FromBody] testClass msg
之后。为什么当我使用 [FromBody] testClass msg
时它的 returns 400?以及如何从 HTTP 客户端调用此控制器方法?
我试过了,它也是 returns 400 BadRequest
string serviceUrl = string.Format("{0}/notification/updateMessageTemplate/{1}", ConfigurationManager.AppSettings["LtApiUrl"], templateID);
string json = "[{\"body\":\"sample text\"}]";
HttpClient client = new HttpClient();
HttpMethod method = new HttpMethod("PATCH");
HttpRequestMessage message = new HttpRequestMessage(method, serviceUrl);
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("tenantId", tenantId.ToString());
client.DefaultRequestHeaders.Add("Authorization", string.Format("bearer {0}", token));
message.Content = content;
var response = client.SendAsync(message).Result;
return response.StatusCode.ToString();
我该如何解决这个问题?请帮我。我删除了之前的问题,这是我真正的问题
更新:
我将邮递员请求更改为。
在那之后它的作品。但是当我通过 http 客户端代码调用它时,它提供了 400 BadRequest
。如何通过 http client
你能试试这个吗?
[HttpPatch("updateMessageTemplate/{templateId}")]
public IActionResult UpdateMessageTemplate([FromHeader] int tenantId, int templateId,
[FromBody] JsonPatchDocument<testMsg> msg)
{
try
{
//Some implementation is here
return Accepted();
}
catch
{
return StatusCode(500);
}
}
如果您使用 FromBody
,您需要使用 json 而非表单 data.You 发送请求,可以像下面这样更改您的邮递员:
1.change ContentType 为 application/json
:
2.change Body to raw 并选择样式 JSON:
更新:
您需要像下面这样更改您的 json:
string json = "{\"body\":\"sample text\"}";