En supposant que vous ayez oublié de cocher la case API Web (ajoutez-le au projet) lors de la création d'un nouveau projet MVC (5), que devez-vous ajouter à l'API Web et le faire fonctionner?
Il existe de nombreuses questions sur la migration, mais aucune ne semblait avoir les étapes complètes et à jour pour ajouter l'API Web à un projet MVC 5 et elle semble avoir changé depuis réponses anciennes.
Ajout de GlobalConfiguration.Configure (WebApiConfig.Register) MVC 4
Utilisez Nuget pour obtenir la dernière API Web.
Projet - Cliquez avec le bouton droit de la souris sur - Gestion des packages de pépites - Recherchez l'API Web (API Web Microsoft ASP.NET ...) et installez-la sur votre projet MVC.
Ensuite, vous devez toujours obtenir le routage API Web pour fonctionner. De Configuration de l'API Web ASP.NET 2 par Microsoft
Ajoutez WebApiConfig.cs dans le dossier 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 vous avez un projet MVC, il aura Global.asax.cs , ajoutez les nouveaux itinéraires. L'ordre des routes Global.asax.cs est critique. Notez qu'il existe des exemples obsolètes qui utilisent WebApiConfig.Register
Ajoutez cette ligne à 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);
}
Pour obtenir le ( très ) pages d'aide de WebAPI utiles , installez WebAPI.HelpPage. Voir http://channel9.msdn.com/Events/Build/2014/3-644 (~ 42 minutes) pour ce qu'il fait. Cela semble très utile!
Console Nuget: Install-Package Microsoft.AspNet.WebApi.HelpPage
Dans le dossier des contrôleurs -> Ajouter un nouvel élément -> Classe de contrôleur API Web.
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";
}
//...
}
Vous pouvez maintenant tester dans IE/FF/Chrome comme d'habitude, ou dans les consoles JavaScript pour les tests sans récupération.
(Avec seulement le contrôleur dans l'URL, il appellera l'action GET () dans le nouveau contrôleur API Web, il est automatiquement mappé aux méthodes/actions en fonction du REST, par exemple, PUT/POST/GET/DELETE. Vous pas besoin de les appeler par action comme dans MVC) L'URL directement:
http://localhost:PORT/api/CONTROLLERNAME/
Vous pouvez également utiliser jQuery pour interroger le contrôleur. Exécutez le projet, ouvrez la console (F12 dans IE) et essayez d’exécuter une requête Ajax. (Vérifiez votre PORT & CONTROLLERNAME)
$.get( "http://localhost:PORT/api/CONTROLLERNAME/", function( data ) {
//$( ".result" ).html( data );
alert( "Get data received:" + data);
});
Vérification de l'aide WebAPI: http://localhost:PORT/help