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

问题描述 投票:-1回答:3

我很擅长在C#中创建和使用REST Web服务。我已将要发送的数据编程到REST端点。我不确定我是否正确地做了一切。就像我之前提到的,这是我第一次编写RESTful PUT请求。

我创建了一个类并创建了一个PUT请求。我想看看我的JSON结果。它显示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 = "[email protected]",
            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结果?

c# rest dotnet-httpclient
3个回答
0
投票

在我看来,其他人已经通过答案和评论回答了这个问题。但由于问题仍然存在,请让我尝试回答更多细节。

您假设您应该能够获得作为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不返回任何响应。

根据您的解释,您调用的API遵循第二种方式。如果您有权访问API代码,则可以验证这一点。

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

希望这可以帮助!


3
投票

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

在RESTful API中,这是一个非常正常的预期响应。

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


0
投票

您可以在线使用Postman等API测试工具或其他工具,并在工具中提供相应的输入。检查Put查询的输出。那么你可能会知道确切的问题。

© www.soinside.com 2019 - 2024. All rights reserved.