Cómo agregar API web a una API existente ASP.NET MVC (5) ¿Proyecto de aplicación web?


Asumiendo que olvidó marcar la casilla de verificación Web API (agregarla al proyecto) al hacer un nuevo proyecto MVC (5), ¿qué necesita hacer para agregar Web API y hacerlo funcionar?

Hay un montón de preguntas de migración, pero ninguno parecía tener los pasos completos y actualizados para agregar Web API a un proyecto MVC 5 y parece haber cambiado de algunas de las respuestas antiguas.

Añadir Web API a MVC 4

Añadir Configuración global.Configure (WebApiConfig.Registro) MVC 4

Author: Community, 2014-09-26

1 answers

Actualizar el proyecto MVC

Use Nuget para obtener la API web más reciente.

Proyecto - Clic derecho - Administrar paquetes Nuget - Búsqueda de Web API (Microsoft ASP.NET Web API ...) e instalarlo en su proyecto MVC.

Entonces todavía necesita obtener Web API routing para funcionar. Desde La configuración de Microsoft ASP.NET Web API 2

Añadir WebApiConfig.cs a la carpeta App_Start /

using System.Web.Http;

namespace WebApplication1
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // TODO: Add any additional configuration code.

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

        // WebAPI when dealing with JSON & JavaScript!
        // Setup json serialization to serialize classes to camel (std. Json format)
        var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
        formatter.SerializerSettings.ContractResolver =
            new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
        }
    }
}

Si tiene un Proyecto MVC, tendrá Global.asax.cs , añade las nuevas rutas. Orden de lo Global.asax.las rutas cs son críticas. Tenga en cuenta que hay ejemplos obsoletos que utilizan WebApiConfig.Register

Agregue esta línea a Global.asax.cs: GlobalConfiguration.Configure(WebApiConfig.Register);

protected void Application_Start()
{
    // Default stuff
    AreaRegistration.RegisterAllAreas();

    // Manually installed WebAPI 2.2 after making an MVC project.
    GlobalConfiguration.Configure(WebApiConfig.Register); // NEW way
    //WebApiConfig.Register(GlobalConfiguration.Configuration); // DEPRECATED

    // Default stuff
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

Ayuda de WebAPI

Para obtener el (muy) páginas de ayuda útiles de WebAPI, instale WebAPI.HelpPage. Véase http://channel9.msdn.com/Events/Build/2014/3-644 (~42 minutos en) para lo que hace. Se ve muy útil!

Consola Nuget: Install-Package Microsoft.AspNet.WebApi.HelpPage

Para verificar que WebAPI está funcionando:

A la carpeta controllers -> Add new item -> Web API Controller Class.

public class TestController : ApiController
{
    //public TestController() { }

    // GET api/<controller>
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/<controller>/5
    public string Get(int id)
    {
        return "value";
    }
    //...
}

Ahora puede probar en IE/FF/Chrome como de costumbre, o en las consolas JavaScript para pruebas no get.

(Con solo el controlador en la URL llamará a la acción GET() en el nuevo Controlador de la API Web, se asigna automáticamente a métodos/acciones dependiendo del RESTO, por ejemplo, PUT/POST/GET/DELETE. No necesidad de llamarlos por acción como en MVC) La URL directamente:

http://localhost:PORT/api/CONTROLLERNAME/

Alternativamente use jQuery para consultar el controlador. Ejecute el proyecto, Abra la consola (F12 en IE) e intente ejecutar una consulta Ajax. (Compruebe su NOMBRE DE PUERTO Y CONTROLLERNAME)

$.get( "http://localhost:PORT/api/CONTROLLERNAME/", function( data ) {
    //$( ".result" ).html( data );
    alert( "Get data received:" + data);
});

Nota al margen: Hay algunos pros/contras a considerar al combinar MVC y Web API en un proyecto

Verificación de la ayuda de WebAPI: http://localhost:PORT/help

 228
Author: lko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:37