繁体   English   中英

使用HttpClient()在C#控制台应用程序中对REST API的PUT请求

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

我对使用C#创建和使用REST Web服务非常陌生。 我已经对要发送到REST端点的数据进行了编程。 我不确定我是否做得正确。 就像我之前提到的,这是我第一次编写RESTful PUT请求。

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

如何查看JSON结果?

sbStudent类型的对象,当我将请求发送到URL时,它返回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 response204状态码。

如何查看JSON结果?

API返回204 - No Content PUT请求中204 - No Content仅表示该API收到了该请求并对其进行了处理,但是除了成功(2xx)响应状态外,它没有任何有意义的回馈。

在RESTful API中,这是所期望的完全正常的响应。

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

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

我认为,其他人已经通过答案和评论回答了它。 但是,由于问题仍然悬而未决,让我尝试提供更多详细信息。

您认为应该能够将JSON结果作为PUT API响应的一部分的假设并不总是正确的,这取决于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不会返回任何响应。

根据您的解释,正在调用的API遵循第二种方法。 如果您有权访问API代码,则可以进行验证。

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

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM