Запрос PUT для API REST в консольном приложении C # с использованием HttpClient () - PullRequest
0 голосов
/ 22 марта 2019

Я очень новичок в создании и использовании веб-служб REST в C #.Я запрограммировал данные, которые хочу отправить в конечную точку REST.Я не уверен, что делаю все правильно.Как я уже упоминал ранее, я впервые пишу запрос PESTful PUT.

Я создал класс и создал запрос PUT.Я хочу увидеть мой результат в формате JSON.Это показывает no content.Функции возвращают правильные результаты для меня.

Как я могу увидеть мой результат JSON?

sb - это объект типа Student, и когда я отправляю запрос на 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 response возвращает код состояния 204.

Как я могу увидеть мой результат JSON?

Ответы [ 3 ]

3 голосов
/ 22 марта 2019

API, возвращающий 204 - No Content из запроса PUT, просто означает, что API получил запрос и обработал его, но у него нет ничего значимого для возврата, кроме статуса успешного (2xx) ответа.

В RESTful API это совершенно нормальный ответ, ожидаемый.

Чтобы точно знать, что должно происходить, вам нужно обратиться к документации используемого вами API.

0 голосов
/ 27 марта 2019

По моему мнению, другие уже ответили на это как ответами, так и комментариями. Но так как вопрос все еще открыт, позвольте мне попытаться ответить более подробно.

Ваше предположение о том, что вы должны быть в состоянии получить результат JSON как часть ответа API PUT, не всегда правильно, оно зависит от реализации API.

Вот несколько способов реализации API PUT:

  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 для того же объекта, чтобы проверить, было ли обновление успешным.

Надеюсь, это поможет!

0 голосов
/ 25 марта 2019

Вы можете использовать инструмент тестирования API, такой как Postman, или некоторые другие инструменты онлайн и предоставить соответствующие данные в инструмент. Проверьте вывод для запроса Put. Тогда вы можете знать точную проблему.

...