How do I make calls to a REST API using C#?

后端 未结 15 1820
面向向阳花
面向向阳花 2020-11-22 08:10

This is the code I have so far:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
using System.Net.Http;
usi         


        
15条回答
  •  暖寄归人
    2020-11-22 08:51

    A solution in ASP.NET Core:

    using Newtonsoft.Json;
    using System;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    using System.Configuration;
    
    namespace WebApp
    {
        public static class HttpHelper
        {
            // In my case this is https://localhost:44366/
            private static readonly string apiBasicUri = ConfigurationManager.AppSettings["apiBasicUri"];
    
            public static async Task Post(string url, T contentValue)
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(apiBasicUri);
                    var content = new StringContent(JsonConvert.SerializeObject(contentValue), Encoding.UTF8, "application/json");
                    var result = await client.PostAsync(url, content);
                    result.EnsureSuccessStatusCode();
                }
            }
    
            public static async Task Put(string url, T stringValue)
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(apiBasicUri);
                    var content = new StringContent(JsonConvert.SerializeObject(stringValue), Encoding.UTF8, "application/json");
                    var result = await client.PutAsync(url, content);
                    result.EnsureSuccessStatusCode();
                }
            }
    
            public static async Task Get(string url)
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(apiBasicUri);
                    var result = await client.GetAsync(url);
                    result.EnsureSuccessStatusCode();
                    string resultContentString = await result.Content.ReadAsStringAsync();
                    T resultContent = JsonConvert.DeserializeObject(resultContentString);
                    return resultContent;
                }
            }
    
            public static async Task Delete(string url)
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(apiBasicUri);
                    var result = await client.DeleteAsync(url);
                    result.EnsureSuccessStatusCode();
                }
            }
        }
    }
    

    To post, use something like this:

    await HttpHelper.Post($"/api/values/{id}", setting);
    

    Example for delete:

    await HttpHelper.Delete($"/api/values/{id}");
    

    Example to get a list:

    List claimTerms = await HttpHelper.Get>("/api/values/");
    

    Example to get only one:

    ClaimTerm processedClaimImage = await HttpHelper.Get($"/api/values/{id}");
    

提交回复
热议问题