¿Cómo gestionar el control de los requests en la WebAPI?
La WebAPI es una pieza tecnológica bastante extensible que permite utilizar extensiones de la API existente del ERP para facilitar la creación de métodos REST que reutilicen los mecanismos de seguridad existentes. Este mecanismo es otra extensión que permite a los programadores bloquear el envío del request. Puede ser útil cuando se desee añadir mecanismos de seguridad a la forma en que se realizan/bloquean las peticiones. Requisitos previos Paso 1 - Crear el proyecto En primer lugar, debe crear un proyecto con Visual Studio para poder crear una clase que añada más funcionalidad. Este proyecto debe ser del tipo Class Library (.NET Framework). Paso 2 - Referencias Las siguientes referencias deben ser añadidas al proyecto: Paso 3 - Codificación En el proyecto recién creado debe añadirse una nueva clase, por ejemplo: Paso 4 - Compilación y deployment Tras realizar con éxito los pasos anteriores, debe compilar el proyecto. En la carpeta output del proyecto se generará la assembly que deberá copiarse en la carpeta Web API, que suele ser la carpeta: "PRIMAVERA/SG100/Apl/WebApi/bin/Extensions". Se trata de un mecanismo de extensión más para este software, que ya era muy extensible de por sí y que proporciona un mayor control sobre las requests realizado a la WebAPI.Procedimiento
namespace Primavera.WebAPI.MessageHandler
{
/// <summary>
/// Extension point to interact with WebAPI
/// </summary>
public class CustomMessageHandler : ICustomMessageHandler
{
/// <summary>
/// Allow or deny the request
/// In case of denial the user will receive a Forbidden message: 403.
/// </summary>
/// <param name="request">The request message.</param>
/// <returns>True when the call will continue, else the user will receive a Forbidden.</returns>
public override bool CanDispatchesRequest(Uri requestUri)
{
// this.PSO => Platform instance
// this.BSO => API Instance
// Neste exemplo todos os pedidos efetuados ao Uri que contenha /Base/Artigos são bloqueados
if(requestUri.AbsolutePath.Contains("/Base/Artigos"))
{
return false;
}
return true;
}
}
}
Conclusión
login para deixar a sua opinião.