Compartir a través de


Implementación de un punto de conexión REST de Server-Side personalizado

 

Se aplica a: Windows Azure Pack

El lado servidor proporciona un conjunto de API REST a las que llama el lado cliente para recuperar datos y realizar operaciones. Ambos tipos de operación normalmente llamarán a en un back-end para obtener los datos reales o realizar la operación real. El controlador, que es lo que implementa la API, suele ser un controlador de MVC ASP.NET que devuelve JSON y el back-end normalmente será Service Management API, pero puede ser cualquier otro servicio accesible desde un sitio web de ASP.NET MVC.

Importante

El ejemplo de Hola mundo proporciona una implementación del lado servidor de ejemplo.

Tanto el lado cliente como el lado servidor pueden residir en el mismo proyecto de Visual Studio y se implementan en los mismos portales de administración.

Clase Controller

La clase de controlador es una instancia de uno de los ASP.NET clases abstractas estándar de MVC Controller o AsyncController. Normalmente, se marcará con los atributos [RequireHttps] para asegurarse de que solo se permiten conexiones seguras, [OutputCache] para no permitir el almacenamiento en caché de las respuestas y [PortalExceptionHandler], que se describe en la siguiente sección Control de errores . Para evitar ataques de suplantación de identidad (phishing), los métodos del controlador se marcan con [HttpPost]. Esto no permite solicitudes HTTP GET al tiempo que permite solicitudes HTTP POST. Ni los marcos de cliente ni del lado servidor ponen restricciones en la forma en que el servidor y los lados del cliente se comunican entre sí, a excepción de dónde se requiere la interacción con el widget Grid del marco del lado cliente. En ese caso, consulte la siguiente sección Devolver conjuntos de datos .

Devolver conjuntos de datos

Un conjunto de datos es una lista de datos que se mostrarán en la interfaz de usuario, normalmente en una lista (vista de cuadrícula). Es diferente de una respuesta estándar en que el marco del lado cliente controla la recuperación y la muestra en una cuadrícula. Si un método devuelve un conjunto de datos, normalmente representado en la interfaz de usuario como una lista, se recomienda usar el método Controller.JsonDataSet como en el ejemplo siguiente:

return this.JsonDataSet(listOfData);

Esto ajusta automáticamente el conjunto de datos listOfData en un contenedor JSON adecuado para su procesamiento por parte del marco del lado cliente. Para obtener información sobre la implementación del lado cliente, consulte How to Display a Grid in a Windows Extensión del Portal de administración de módulos de Azure.

Comandos de realización

Los métodos que realizan comandos en el controlador normalmente devolverán un objeto JSON para mostrar que la operación ha funcionado. Esto puede ser tan sencillo como un éxito booleano, o tan complejo como los datos que han cambiado como resultado de la operación. No hay nada que realmente requiera el cliente ni los marcos del lado servidor.

Control de errores

Las excepciones producidas por el controlador generalmente deben mostrarse al usuario para realizar más acciones o realizar un seguimiento. La manera más fácil de hacerlo en el lado servidor es aplicar el atributo [PortalExceptionHandler] a la clase. Todas las excepciones de tipo PortalException se traducirán a JSON correctamente modelado, tienen el código de error HTTP adecuado establecido y se devolverán al lado cliente para facilitar la visualización con una notificación de error. A continuación se muestra un ejemplo del json devuelto por el error con el atributo [PortalExceptionHandler]:

{
  "message": "Fake Error",
  "ErrorMessage": "Fake Error",
  "httpStatusCode": "InternalServerError",
  "operationTrackingId": null,
  "stackTrace": null,
}

Cualquier otro tipo de excepción se mostrará como un error HTTP 500 vacío, para evitar exponer los detalles internos al usuario. Además, los seguimientos de pila solo se enviarán si el portal en el que se ejecuta la extensión tiene DevelopmentMode establecido en true. Esto se puede cambiar en el archivo web.config del portal de administración. Para obtener más información, consulte la sección UI for Errors Returned from API Calls (Ui for Errors returned from API Calls).

Consulte también

Windows extensiones de interfaz de usuario del Portal de administración de módulos de Azure
Cómo mostrar una cuadrícula en una extensión del Portal de administración de módulos de Azure Windows
Depuración de una extensión del Portal de administración de módulos de Azure Windows