A Simple Web API Helper

This post gives you the code to help you build an API url with the parameters and a quick way to call a simple get method and parse the results to the object you are expecting back from the API.

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace SupplierPortal.Library.Helpers
{
    public class ApiHelper
    {
        public string BuildApiUrl(string domainAddress, string controllerName, string methodName, List<KeyValuePair<string, object>> parameters, string apiLocation)
        {
            StringBuilder url = new StringBuilder();
            url.Append($"{domainAddress}/{apiLocation}{controllerName}/{methodName}");
            if (parameters != null && parameters.Count > 0)
            {
                int parameterCount = parameters.Count;
                for (int i = 0; i < parameterCount; i++)
                {
                    url.Append(i == 0 ? "?" : "&");
                    url.Append($"{parameters[i].Key}={parameters[i].Value.ToString()}");
                }
            }
            return url.ToString();
        }

        public T GetResultFromApi<T>(string url)
        {
            using (HttpClient httpClient = new HttpClient())
            {
                Task<String> response = httpClient.GetStringAsync(url);
                return Task.Factory.StartNew(() => JsonConvert.DeserializeObject<T>(response.Result)).Result;
            }
        }
    }
}

Usage Example

And here is how you would call it.

using CodeShare.Library.Helpers;


var user = new HttpContextWrapper(HttpContext.Current).User; List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>(); parameters.Add(new KeyValuePair<string, object>("username", user.Identity.Name)); parameters.Add(new KeyValuePair<string, object>("mediaPath", context.Request.FilePath)); ApiHelper apiHelper = new ApiHelper();
string url = apiHelper.BuildApiUrl( domainAddress: "http://www.example.com", apiLocation: "Umbraco/Api/", controllerName: "ProtectedMediaApi", methodName: "IsAllowed", parameters: parameters);
bool isAllowed = apiHelper.GetResultFromApi(url);

Want to thank me?

If I've helped you out and you want to thank me, why not buy me a coffee?

About the author

Paul Seal

Umbraco MVP and .NET Web Developer from Derby (UK) who specialises in building Content Management System (CMS) websites using MVC with Umbraco as a framework. Paul is passionate about web development and programming as a whole. Apart from when he's with his wife and son, if he's not writing code, he's thinking about it or listening to a podcast about it.

Related Posts

How to create a dynamic image from multiple images using ImageProcessor

This post shows you how I created a handler to create dynamic header images for my umbraco website u…

Read Post

How to send Slack messages programmatically using C#

In this post I show you how you can send Slack messages programmatically using C#

Read Post

How to fix the SVG 404 error when using Umbraco and Azure Blob Storage

In this post I show you how to solve the SVG 404 error when working with Umbraco and Azure Blob Stor…

Read Post

Find out how my blog reached 1 million page views

In this post I will tell you how my blog reached 1 million page views.

Read Post