当前位置: 首页 > 知识库问答 >
问题:

错误请求400从API修补程序方法返回

麻宜春
2023-03-14

在我的API控制器类中有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; }
}

我从postman调用了API,并返回了它的请求。

我在Controller方法中放置了断点,但它没有命中。在我从方法参数breakpoin hit中删除了[FromBody]testClass msg之后,没有返回400。当我使用[FromBody]testClass msg时,为什么它返回400?我如何从HTTP客户端调用这个控制器方法?。

我试过这个,它也会返回400个请求

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 BADDREQUEST。如何通过http客户端提供正确的JSON正文

共有2个答案

江鹏飞
2023-03-14

你能试试这个吗。

[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);
 }
}
施雅懿
2023-03-14

对于使用FromBody,需要使用json而不是表单数据发送请求。你可以像下面这样更换邮递员:

1.changeContentType到应用程序/json:

2.change身体原始并选择风格JSON:

更新:

你需要改变你的json如下:

string json = "{\"body\":\"sample text\"}";
 类似资料:
  • 我试图使用Gmail API将用户设置应用到Gmail帐户,但它不断返回错误400错误请求。 我可以看到错误代码在Gmail API控制台,它来自我的服务号,所以代码不可能是如此错误,但它让我发疯,只是不能找出什么是错误的。 如果有人能给我指出正确的方向,我会非常感激。

  • 我对PersondTo有以下定义: 下面是一个示例记录: 现在,无名氏离婚了。所以我需要向这个URL发送补丁请求: 我想不出该怎么做。以下是我到目前为止所做的尝试: 以下是上面的问题: 1)由于我只设置了MaritalStatus,其他字段都将为null。因此,如果我打印出请求,它将如下所示: 请欣赏那些编写客户机应用程序的人提出的使用Spring的RESTTemplate使用Restful we

  • 我有一个让我发疯的问题。我正在尝试使用PayPal目录API更新产品。这是一个相当基本的cURL调用,使用以下代码: 但它总是返回以下错误: stdClass对象([名称]= 有人能帮忙吗?谢谢!

  • 问题内容: 这工作正常: 这将返回400 Bad Request(只是使用.ajax来支持错误处理的上述jQuery的重新格式)。 问题答案: 我认为您只需要再添加2个选项(和):

  • 我目前正在努力从API获取一些数据,但在一些请求中遇到了问题。 当前调用和其他一些类似的调用似乎不起作用,而其他调用则起作用(除了这些调用不使用“payload”参数)。我在文档中使用了相同的示例,因此不确定这些示例为什么不起作用。 回报 有人有主意吗?谢谢。

  • 我试图对我写的rest api执行一个put请求,但它总是返回400-bug请求。 java.io.IO异常:服务器返回HTTP响应代码:400为URL:http://localhost:8000/api/v0/contacts/2sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知来源) 我可以用firefox rest客户端