Is ASP.Net Web API a good choice for API consumed by .Net and PHP?

asp.net, asp.net-web-api, c#, php, rest

Solution

1) On the client side you can parse the response (json/xml) as your strongly-typed class. Code snippet from here:

You have already defined Product class in your client:

class Product
{
    public string Name { get; set; }
    public double Price { get; set; }
    public string Category { get; set; }
}

Then you call the API to get products and get the response parsed into enumerable of Products:

HttpResponseMessage response = client.GetAsync("api/products").Result;  // Blocking call!
if (response.IsSuccessStatusCode)
{
    // Parse the response body. Blocking!
    var products = response.Content.ReadAsAsync<IEnumerable<Product>>().Result;
    foreach (var p in products)
    {
        Console.WriteLine("{0}\t{1};\t{2}", p.Name, p.Price, p.Category);
    }
}

2) ASP .NET Web API is based on HTTP. So as long as your client talks HTTP you can consume the web services.

Problem

In the old days, I used ASMX which provides strongly typed classes via SOAP WSDL. I have to implement API which will be consumed by both .Net and PHP. So I already decided to go with REST (I'm really impressed by the Azure's Rest APIs such as Blob storage). I'm pretty new to Web API although I read few books - Pro ASP.NET MVC 4, APIs, Pro ASP.NET Web API Security. However, I still can't figure out the followings - Questions Can a client get strongly typed classes from Web API like SOAP WSDL? (If not, what do I have to do in order to get a strong typed classes like Azure Blob Storage) Can PHP client consume Web API easily? (I know nothing about PHP) Thank you for shedding a light! Please note that this is not an argument about SOAP vs Rest, Web API vs WCF.

Original source