Relembrando
No último post (Desenvolvendo suas aplicações com Self Host), vimos o que é e como criar um Self Host. Hoje vamos ver como fazer um Self Host trabalhar como um Web Api.
Primeiro Passo
Bem o primeiro passo é como o do primeiro artigo, que é criar um novo projeto do tipo Console Application.
Com o projeto criado vamos agora preparar nosso Self Host, para isso vamos instalar o pacote Owin via nuget:
Lembrando que ele instala os seguintes pacotes:
Agora conforme no projeto anterior temos que configurar nosso Progam.cs e criar a classe Startup.cs conforme abaixo:
Program.cs
Startup.cs
Ao compilar vamos ter o seguinte retorno conforme no artigo anterior:
*No caso de dúvida veja o artigo anterior (Desenvolvendo suas aplicações com Self Host) para entender melhor o processo.
Criando o Web API
Feito o processo de se criar o Self Host, agora vamos criar nosso Web API, o primeiro passo é instalar o pacote de Web API do Owin:
Os seguintes pacotes serão instalados:
Feito isso as modificações para responder ao Web API são simples, vamos modificar nosso Startu.cs e vamos colocar o seguinte código:
public void Configuration(IAppBuilder app) { // Configure Web API for self-host. var config = new HttpConfiguration(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); app.UseWebApi(config); }
Feito isso agora já temos nossas Rotas configuradas, o próximo passo é criar nossos Controllers, abaixo vamos criar um Controller de exemplo, para isso vamos criar um Folder Controller em nosso projeto:
Dentro dessa pasta vamos criar nossa classe DemoController, ela vai ter o seguinte código:
using System.Collections.Generic; using System.Web.Http; namespace SelfHostWebApi.Controller { public class DemoController : ApiController { // GET api/demo public IEnumerable<string> Get() { return new string[] { "Hello", "World" }; } // GET api/demo/5 public string Get(int id) { return "Hello, World!"; } // POST api/demo public void Post([FromBody]string value) { } // PUT api/demo/5 public void Put(int id, [FromBody]string value) { } // DELETE api/demo/5 public void Delete(int id) { } } }
*A classe tem que Herdar de ApiController, igual nos projetos Web API do Visual Studio
Pronto, só com isso já podemos compilar nosso projeto e ao acessar a Url http://localhost:12345/api/Demo teremos o seguinte o seguinte retorno:
Conclusão
Podemos ver como é simples implementar um Web API utilizando o self host, assim poderemos criar pequenas aplicações com servidores embarcados, sem a necessidade de que se tenha um servidor com IIS.
Referências
https://docs.microsoft.com/en-us/aspnet/web-api/overview/older-versions/self-host-a-web-api
https://codeopinion.com/self-host-asp-net-web-api/