blog/content/posts/2012/11/01/minimalistic-rest-server-in-dotnet.md

80 lines
1.9 KiB
Markdown
Raw Permalink Normal View History

2022-06-25 08:47:06 +01:00
---
title: How to build minimalistic REST server in .Net
date: 2012-11-01 13:22:39
tags: [dotnet]
category: programming
---
Install "Microsoft ASP.NET Web API Self Host" and all of its
dependencies via NuGet.
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.SelfHost;
namespace resttest
{
public class ExampleData { public int Id { get; set; } }
public class ExampleController : ApiController
{
// /api/job
public IEnumerable<ExampleData> Get()
{
return new List<ExampleData>()
{
new ExampleData(){ Id = 2 },
new ExampleData(){ Id = 4 }
};
}
// /api/job/3
public ExampleData Get(int id)
{
return new ExampleData() { Id = 3 };
}
}
class Program
{
static void Main(string[] args)
{
var configuration =
new HttpSelfHostConfiguration("http://localhost:1337");
//Setup the routes
configuration.Routes.MapHttpRoute(
name: "DefaultApiRoute",
routeTemplate: "api/{controller}/{id}",
defaults: new
{ controller = "ExampleController", id = RouteParameter.Optional }
);
var server = new HttpSelfHostServer(configuration);
server.OpenAsync().Wait();
Console.Out.WriteLine("Press ESC to quit");
do
{
while (!Console.KeyAvailable)
{
Thread.Sleep(256);
}
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
}
}
}
```
We can launch it and query it using any http-enabled client:
`$ curl http://localhost:1337/api/Example [{"Id":2},{"Id":4}]`
Happy hacking !