首页 > 解决方案 > 使用 Httpclient 将数据发布到其参数不是复杂对象的 WebApi

问题描述

这是我的 webapi 发布请求

    [HttpPost]
    [Route("Create/{id}")]
    public async Task<IActionResult> CreateContact(Guid id, string email, string fullName)
    {
        // code removed for brevity
    }

如何将contact对象发布到 webapi?这就是我在客户端中所拥有的。

   using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("https://localhost:123");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var contact = new Contact() { Id = 12345, Email = "test@gmail.com", FullName = "John" };
            HttpResponseMessage response = await client.PostAsJsonAsync($"/api/Contact/Create/{contact.Id}", contact);

            if (response.IsSuccessStatusCode)
            {
                
            }
            else
            {
         
            }
        }

标签: c#

解决方案


不确定这是否是最好的,但它有效。在Route属性中添加更多参数

[HttpPost]
[Route("Create/{id}/{email}/{fullName}")]
public async Task<IActionResult> CreateContact(Guid id, string email, string fullName)
{
    // code removed for brevity
}

然后在 httpclient

 HttpResponseMessage response = await client.PostAsJsonAsync($"/api/Contact/Create/{contact.Id}/{contact.Email}/{contact.FullName}", contact);

推荐阅读