Een aangepast Server-Side REST-eindpunt implementeren
Van toepassing op: Windows Azure Pack
De serverzijde biedt een set REST API's die door de client worden aangeroepen om zowel gegevens op te halen als bewerkingen uit te voeren. Beide typen bewerkingen roepen doorgaans een back-end aan om de werkelijke gegevens op te halen of de werkelijke bewerking uit te voeren. De controller, die de API implementeert, is meestal een ASP.NET MVC-controller die JSON retourneert en de back-end doorgaans Service Management-API is, maar kan elke andere service toegankelijk zijn vanaf een ASP.NET MVC-website.
Belangrijk
Het Hallo wereld Sample biedt een voorbeeldimplementatie aan de serverzijde.
Zowel de clientzijde als de serverzijde kunnen zich in hetzelfde Visual Studio project bevinden en worden geïmplementeerd in dezelfde beheerportal(s).
Controllerklasse
De controllerklasse is een exemplaar van een van de ASP.NET MVC-standaardabstrahklassen Controller of AsyncController. Deze wordt meestal gemarkeerd met de kenmerken [RequireHttps] om ervoor te zorgen dat alleen beveiligde verbindingen zijn toegestaan, [OutputCache] om caching van antwoorden niet toe te staan en [PortalExceptionHandler] die wordt beschreven in de volgende sectie Afhandelingsfouten . Om phishingaanvallen te voorkomen, worden methoden in de controller gemarkeerd met [HttpPost]. Hierdoor worden HTTP GET-aanvragen niet toegestaan terwijl HTTP POST-aanvragen worden toegestaan. De frameworks aan de client- of serverzijde leggen geen beperkingen op hoe de server- en clientzijde met elkaar communiceren, met uitzondering van waar interactie met de gridwidget van het clientframework vereist is. In dat geval raadpleegt u de volgende sectie Met gegevenssets retourneren .
Gegevenssets retourneren
Een gegevensset is een lijst met gegevens die door de gebruikersinterface moeten worden weergegeven, meestal in een lijst (rasterweergave). Het verschilt van een standaardantwoord in dat het framework aan de clientzijde het ophalen en weergeven ervan in een raster afhandelt. Als een methode een gegevensset retourneert, die doorgaans wordt weergegeven in de gebruikersinterface als een lijst, is het raadzaam om de methode Controller.JsonDataSet te gebruiken, zoals in het volgende voorbeeld:
return this.JsonDataSet(listOfData);
Hiermee wordt de listOfData-gegevensset automatisch verpakt in een JSON-wrapper die geschikt is voor verwerking door het framework aan de clientzijde. Zie Een raster weergeven in een Windows Azure Pack Management Portal-extensie voor informatie over de implementatie aan de clientzijde.
Opdrachten uitvoeren
Methoden die opdrachten uitvoeren op de controller retourneren meestal een JSON-object om de bewerking weer te geven. Dit kan net zo eenvoudig zijn als een Booleaanse aantekening als succes, of zo complex als de gegevens die zijn gewijzigd als gevolg van de bewerking. Er is echter niets vereist voor de client of frameworks aan de serverzijde.
Fouten verwerken
Uitzonderingen die door de controller worden gegenereerd, moeten over het algemeen worden weergegeven aan de gebruiker voor verdere actie of follow-up. De eenvoudigste manier om dit aan de serverzijde te doen, is door het kenmerk [PortalExceptionHandler] toe te passen op uw klasse. Eventuele uitzonderingen van het type PortalException worden vertaald naar correct gemodelleerde JSON, beschikken over de juiste HTTP-foutcodeset en worden geretourneerd naar de clientzijde voor eenvoudige weergave met een foutmelding. Hieronder ziet u een voorbeeld van de JSON die is geretourneerd bij een fout met het kenmerk [PortalExceptionHandler]:
{
"message": "Fake Error",
"ErrorMessage": "Fake Error",
"httpStatusCode": "InternalServerError",
"operationTrackingId": null,
"stackTrace": null,
}
Elk ander type uitzondering wordt weergegeven als een lege HTTP 500-fout, om te voorkomen dat interne gegevens aan de gebruiker worden weergegeven. Bovendien worden stacktraceringen alleen verzonden als de portal waarin de extensie wordt uitgevoerd, developmentmode is ingesteld op true. Dit kan worden gewijzigd in het web.config-bestand van de beheerportal. Zie de sectie-gebruikersinterface voor fouten die zijn geretourneerd door API-aanroepen voor meer informatie.
Zie ook
Windows Azure Pack Management Portal User Interface Extensions
Een raster weergeven in een Windows Azure Pack Management Portal-extensie
Foutopsporing van een Windows Azure Pack Management Portal-extensie