Navigation and service panel


Content

This text is fallbacked from the German Version. If you need use Google Translate


Web API in Sitecore

By Kevin Brechbühl on 1. March 2013, No comments

Mit dem .net Framework 4 hat Microsoft die ASP.net Web API eingeführt. Web API ist ein Framework um HTTP Services zur Verfügung zu stellen, welche von fast allen Clients (z.B. Browser, mobile Geräte) verwendet werden können. Die Web API basiert auf dem Prinzip von Routen und MVC. Da Sitecore bis zur Version 6.6 kein natives MVC unterstützt, müssen einige Sachen beachtet werden, um die Web API trotzdem einsetzen zu können.

Web API ermöglicht das einfache Erstellen einer RESTful Schnittstelle. Dies bedeutet, dass die Clients über einfache HTTP Anfragen eine Schnittstelle zum Server haben. Über verschiedene HTTP Methoden können verschiedene Aufgaben wahrgenommen werden. Mehr Information zur ASP.net Web API sind hier zu finden.

Jede Web API ist eine Klasse welche von ApiController erbt (NuGet Package Microsoft ASP.NET Web API ist dafür notwendig). Die Methoden werden immer gleich benannt wie die HTTP Methode. Folgender Controller bietet Methoden zum Abfragen aller Einträge, zum Abfragen eines Eintrages mit einer Id und zum Aktualisieren eines Antrages mit einer Id:

public class TestController : ApiController
{
   public string Get()
   {
      return "get all entries";
   }

   public string Get(string id)
   {
      return string.Format("get entry with id {0}", id);
   }

   public string Put(string id)
   {
      return string.Format("update entry with id {0}", id);
   }
} 

Konfiguration der Route

Der Aufruf einer Schnittstelle wird wie bei MVC über Routen gemacht. Die Route für eine Schnittstelle muss im global.asax der Sitecore Installation konfiguriert werden:

protected void Application_Start(object sender, EventArgs e)
{
   RouteTable.Routes.MapHttpRoute(
       name: "API",
       routeTemplate: "api/{controller}/{id}",
       defaults: new { id = System.Web.Http.RouteParameter.Optional });
}

Dies definiert eine neue Route "API". Jeder API Controller ist über die Url in irgendeiner Form über api/{controller}/{id} aufzurufen, wobei die Id optional ist. Folgende Adressen wären also gültig:

  • GET http://mysite/api/test/10
  • GET http://mysite/api/test
  • GET http://mysite/content/test/10
  • PUT http://mysite/api/test/10

Konfiguration von Sitecore

Standardmässig wird Sitecore versuchen die Request Url auf ein Content Item zu mappen und sich mit einem 404 melden, da es ein solches Item nicht gibt. Um dies zu unterbinden gibt es das Setting "IgnoreUrlPrefixes" im web.config. Diesem muss nun die Url unseren Controllers angehängt werden. Optimalerweise erstellt man eine Route für sämtliche Controller (in unserem Beispiel "api/" und braucht somit auch nur ein Url-Prefix zu ignorieren. Wir würden also "/api/" zusätzlich konfigurieren.

Zusammenfassung

Die ASP.net Web API wurde mit .net 4 eingeführt und basiert auf dem Prinzip von MVC. Da Sitecore jedoch hauptsächlich auf WebForms basiert müssen folgende Anpassungen vorgenommen werden, damit die Web API auch in Sitecore verwendet werden kann:

  • Konfiguration der Route im global.asax
  • Die Url der Route dem Setting "IgnoreUrlPrefixes" hinzufügen
Categories  Configuration  Libraries Tags  Beispiel  Web API

No comments

Add your comment

Your email address will not be published. Required fields are marked *

*