KingDolly Ответов: 1

Restsharp не возвращает никаких данных GET и POST запрос


Я учусь, как использовать RestSharp, чтобы мой веб-API-вызовов. Когда l делает запрос get с Postman, он возвращает 200, а в теле он дает мне null вместо json, а когда l делает запрос post с Postman, он возвращает 204(без содержимого).
Все предложения приветствуются. Спасибо.

Что я уже пробовал:

Вот мой класс продукта с набором и get mehtods:

public class Product
 {
  public string ProductName { get; set; }
  public string ProductPrice { get; set; }
  public string Manufacturer { get; set; }
  public string Shop { get; set; }
   }


Вот мой класс контроллера продуктов:

  public class ProductsController : ApiController
   {
      Product[] p = new Product[]
       {
       new  Product { ProductName = "JIM", Manufacturer = "Kofi",  ProductPrice = "22", Shop = "12"}
       };



// GET: api/Products/5
public IEnumerable<product> GetAll()
{
    var client = new RestClient("http://localhost:4282/");
    var request = new RestRequest("api/products", Method.GET) { RequestFormat = DataFormat.Json };
    var response = client.Execute<List<product>>(request);

    }

// POST: api/Products
public void Post([FromBody] Product p)
  {
    var client = new RestClient("http://localhost:4282/");
    var request = new RestRequest("api/products", Method.POST);
    request.RequestFormat = DataFormat.Json;
    request.AddJsonBody(p);
    client.Execute(request);
      }

1 Ответов

Рейтинг:
2

Vincent Maverick Durano

Я еще не пользовался RestSharp раньше но вот мое мнение:

Во-первых, ваш код не имеет смысла. Вы создаете Web API конечная точка и ваш вызов/потребление одной и той же конечной точки в реализации конечной точки. Как я понял после того, как погуглил, RestSharp-это REST Http-клиент. Это означает, что вы создаете веб-API отдельно и используете RestSharp в своем приложении .Чистый код для их потребления. Вот хорошая статья, которая демонстрирует, о чем я говорю: ASP.NET веб-API, RestSharp и сообщения об ошибках модели | DotNetCurry[^]

Во-вторых, убедитесь, что вы установили content-type к application/json в конфигурации почтальона.

в-третьих, ваш Get конечная точка не имеет возврата, вот почему вы получаете null У вас должно быть что-то вроде:

public IEnumerable<product> GetAll()
{
    var client = new RestClient("http://localhost:4282/");
    var request = new RestRequest("api/products", Method.GET) { RequestFormat = DataFormat.Json };
    var response = client.Execute<List<product>>(request);

    if (response.Data == null)  
          throw new Exception(response.ErrorMessage);  
  
     return response.Data;  
}


в-четвертых, ваш Post конечная точка пуста, поэтому она возвращается 204(Нет, Не Так). Вы можете вернуть IHttpActionResult что-то вроде:

public IHttpActionResult Post([FromBody] Product p)
{
    var client = new RestClient("http://localhost:4282/");
    var request = new RestRequest("api/products", Method.POST);
    request.RequestFormat = DataFormat.Json;
    request.AddJsonBody(p);
    return Ok(client.Execute(request));
}


и, наконец, при проектировании REST API с помощью Web API я бы предложил прочитать эту короткую статью: ASP.NET ядро и веб-API: Пользовательская оболочка для управления исключениями и согласованными ответами[^]