【问题标题】:How do I send an object to my Web API?如何将对象发送到我的 Web API?
【发布时间】:2014-12-19 12:22:15
【问题描述】:

我刚刚构建了我的第一个 ASP.NET Web API。我现在正在尝试向我的 API 发送一个对象,但不知道该怎么做。

到目前为止,这是我的代码:

Employee employee = new Employee();
employee.Id = 1234;
employee.FirstName = "John";
employee.LastName = "Smith";

using (var client = new HttpClient())
{
   client.BaseAddress = new Uri("http://myapi.mydomain.com");
   client.DefaultRequestHeaders.Accept.Clear();
   client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
   client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token.AccessToken);

   **// How do I send my employee object to the API?**
   HttpResponseMessage response = await client.GetAsync("api/mycontroller/myaction");
   if (response.IsSuccessStatusCode)
   {
      var someObject = await response.Content.ReadAsAsync<myObjectType>();
   }
}

【问题讨论】:

  • 为什么要在 GET 请求中发送整个 Employee 对象?
  • 这只是一个例子,但有时我必须发送大量数据,例如注册新用户、新员工等
  • 再说一遍,为什么它们会是 GET 请求?
  • 这只是我整理的一个简单示例,显然没有关注 POST 与 GET。
  • 好的,但这对你的问题的答案有很大的影响。无论如何,听起来这个问题根本与 Web API 无关,实际上您想要的是:stackoverflow.com/questions/20005355/…

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-web-api2


【解决方案1】:

您需要做的是向 API 端点执行 POST 并将您的员工对象序列化为 json 对象,如下所示:

var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" };
response = await client.PostAsJsonAsync("api/products", gizmo);
if (response.IsSuccessStatusCode)
{
    // Get the URI of the created resource.
    Uri gizmoUrl = response.Headers.Location;
}

目前您现有的代码只是执行一个 GET 请求。

HttpResponseMessage response = await client.GetAsync("api/mycontroller/myaction");

我强烈推荐您take a look at this article,它清楚地强调了如何通过 C# 调用 Web API 端点。

我希望这会有所帮助。

【讨论】:

  • 没问题。很高兴我能帮上忙。
猜你喜欢
  • 2012-12-01
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
相关资源
最近更新 更多