Inicio > asp.net > Http Services con asp.net Web Api 2

Http Services con asp.net Web Api 2

jueves, 5 de diciembre de 2013 Dejar un comentario Ir a comentarios

ffvoilewebapi2Coincidiendo con la publicación de Visual Studio 2013 y con ello las actualizaciones de EntityFramework 6.0.1 y asp.net Web Api 2 se va aprovechar para rescribir parte del proyecto http://www.jcamweb.com/blog/aspnet/http-services-con-asp-net-web-api/ en concreto usar entity framework para las funciones de recuperar e introducción de datos. Además aprovechando la cuenta de windows azure publicaremos el proyecto como web site. La url es http://ffvoilewebapi.azurewebsites.net/de manera que pueda compararse la ejecución a través de Web Services y de asp.net Web Api. El proyecto está organizado tal como se ve en la imagen de la izquierda, se ha creado un proyecto web en blanco para .net 4.5, donde a través de NuGet hemos instalado Entity Framework 6.0.1, SqlServerCe 4.0 para soporte de datos. La parte de código a destacar es por una parte el acceso a datos y LicencieController.Cs que nos proporciona la funcionalidad de aplicación http. En cuanto a la parte html, javascript, jquery puede consultarse en el código de la página default.aspx. Por un lado se ocupan en una tabla de mostrar los datos y con campos de formulario la entrada de un nuevo registro. La parte de código más interesante es la que se ocupa de recuperar/actualizar las pruebas/épreuves contenida en la clase LicencieRepository.cs.

namespace ffvoilewebapi.Models
{
    public class LicencieRepository : ILicencieRepository
    {
        private ffvoilewebapiDbContext context;

        public LicencieRepository()
        {
            context = new ffvoilewebapiDbContext();
        }

        public IEnumerable GetAllLicencies()
        {
            try
            {
                return context.Licencies.ToList();
            }
            catch
            {
                throw;
            }
        }

        public licencie GetLicencie(int id)
        {
            try
            {
                return context.Licencies.SingleOrDefault(c => c.id == id);
            }
            catch
            {
                throw;
            }
        }

        public licencie AddLicencie(licencie item)
        {
            try
            {
                context.Licencies.Add(item);
                context.SaveChanges();
                return item;
            }
            catch
            {
                throw;
            }
        }
    }
}

Por otro lado el web api services lo creamos agregando un nuevo Web Api Controller al proyecto, LicenciesController.cs
cuyo código es

public class LicenciesController : ApiController
    {
        private static readonly ILicencieRepository _licencies = new LicencieRepository();
        // GET api/<controller>
        // Get All licencies
        public IEnumerable<licencie> Get()
        {
            return _licencies.GetAllLicencies();
        }

        // GET api/<controller>/5
        // Get licencie by Id
        public licencie Get(int id)
        {
            try
            {
                licencie licencie = _licencies.GetLicencie(id);
                return licencie;
            }
            catch (Exception ex)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
            }
        }

        // POST api/<controller>
        // Insert licencie
        public HttpResponseMessage Post(licencie value)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    licencie licencie = _licencies.AddLicencie(value);
                    var response = Request.CreateResponse<licencie>(HttpStatusCode.Created, licencie);
                    return response;
                }
                else
                {
                    return Request.CreateResponse(HttpStatusCode.InternalServerError, "Model state is invalid");
                }
            }
            catch (Exception ex)
            {
                return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
            }
        }
       }

Con esta entrada y la publicada anteriormente http://www.jcamweb.com/blog/aspnet/http-services-con-asp-net-web-api/ podemos hacernos una idea de las posibilidades que ofrece asp.net web api.  En cuanto a la aplicación puede verse en funcionamiento a través de http://ffvoilewebapi.azurewebsites.net/

Categories: asp.net Tags: , ,
  1. Sin comentarios aún.
  1. Sin trackbacks aún.
Debes estar registrado para dejar un comentario.