PUT Request for REST API 在 C# 控制台应用程序中使用 HttpClient()

PUT Request for REST API in C# console application using HttpClient()

我对在 C# 中创建和使用 REST Web 服务还很陌生。我已经对要发送到 REST 端点的数据进行了编程。我不确定我是否做对了所有事情。正如我之前提到的,这是我第一次编写 RESTful PUT 请求。

我创建了一个 class 并创建了一个 PUT 请求。我想查看我的 JSON 结果。它显示 no content。函数正在为我返回正确的结果。

如何查看我的 JSON 结果?

sbStudent 类型的对象,当我向 URL 发送请求时,它 returns 处于 204 状态并且无法更新记录。我试图了解此代码中的错误之处:

class Student
{
    public string Name{ get; set; }
    public string Email{ get; set; }
    public int Marks{ get; set; }
    public List<int> Skills{ get; set; }
}

public static void SendDataSomewhere(List<Student> studentsList)
{
    using (var client = new HttpClient())
    {
        Student sb = new Student
        {
            Name= "Test Name",
            Email = "test@gmail.com",
            Marks = HighestMarksFromList(studentsList),
            Skills = InDemandSkills(studentsList),                    
        };

        client.BaseAddress = new Uri("http://testingApi.net/");
        var response = client.PutAsJsonAsync("test", sb).Result;

        if (response.IsSuccessStatusCode)
        {
            Console.Write("Success");
        }
        else
            Console.Write("Error");
    }
}

函数正在为我返回正确的结果。 var response 正在返回 204 状态代码。

如何查看我的 JSON 结果?

API 从 PUT 请求返回 204 - No Content 仅仅意味着 API 收到并处理了请求,但它没有任何意义返回成功 (2xx) 响应状态以外的状态。

在 RESTful API 中,这是完全正常的反应。

为了确定应该发生什么,您需要查阅您正在使用的 API 的文档。

您可以使用 API 测试工具,如 Postman 或其他一些在线工具,并在工具中提供适当的输入。检查 Put 查询的输出。然后你就可以知道确切的问题了。

在我看来,其他人已经通过答案和评论回答了它。但由于问题仍然悬而未决,让我尝试更详细地回答。

作为 PUT API 响应的一部分,您应该能够获得 JSON 结果的假设并不总是正确的,这取决于 API 的实施。

以下是 PUT API 的不同实现方式:

  1. PUT API 给出对象作为响应:

    [HttpPut]
    public HttpResponseMessage Put(int id, Product product)
    {
        //save the Product object.
    
        return Request.CreateResponse(HttpStatusCode.OK, product);
    }
    

在此实现中,API 给出响应中的对象,这就是您所期望的。

  1. PUT API 给出空响应:

    [HttpPut]
    public void Put(int id, Product product)
    {
        //save the Product object.
    }
    

在此实现中,API returns 没有响应。

根据您的解释,您拨打的API属于第二种方式。如果您有权访问 API 代码,则可以验证这一点。

因此,如果您唯一的问题是知道 API 是否不起作用,请执行您的代码以执行 PUT,然后对同一对象执行 GET 以验证更新是否已完成成功。

希望对您有所帮助!