Estoy aprendiendo WebAPI (y REST en general) al convertir un servicio WCF existente a WebAPI. En el proceso, me confundo la mejor manera de manejar las operaciones que no son de CRUD. Aquí está mi contrato de servicio:Operaciones no CRUD en un servicio RESTful (WebAPI)
[ServiceContract]
public interface IProxyHelper
{
[OperationContract]
List<ProxyInfo> GetUsersCurrentUserCanActAsProxyFor(int positionId, int appId);
[OperationContract]
void DeleteProxy(int id);
[OperationContract]
List<ProxyInfo> GetProxyData(int appId);
[OperationContract]
bool CanPositionProxy(int positionId, int appId);
[OperationContract]
void AddProxy(
string userRacf,
string proxyAsRacf,
int userPositionId,
int proxyPositionId,
string requestedByRacf,
int appId);
[OperationContract]
int GetPositionIdByRacf(string racf);
[OperationContract]
string GetRacfByPositionId(int positionId);
}
Algunos de los métodos, como DeleteProxy y AddProxy que se puede mover fácilmente a una metodología basada en la ABM.
Las preguntas surgen en torno a:
GetProxyData - El sistema de proxy es utilizado por varias aplicaciones, y aunque lo que podía hacer api/Proxy/1, siento que es "hacer trampa", ya que debe ser para conseguir proxyid 1, no Proxies para la aplicación 1.
GetUsersCurrentUserCanActAsProxyFor - Esto confunde en varios niveles para mí. ¿Cómo debo manejar múltiples parámetros? Y tampoco está cayendo claramente en el método CRUD.
¿Significa esto que debería abandonar la conversión de WebAPI? Si no, ¿cómo debería abordar estos métodos no estándar?
'GetUsersCurrentUserCanActAsProxyFor' no es relajante, debido a las solicitudes de las necesidades de conocimiento implícito del usuario "actual". Cámbielo a 'GetUsersUserCanActAsProxyFor (string user, int positionId, int appId)' y devuelva el estado 401 si el solicitante no está autorizado a ver la información para usuarios que no sean él. Tanto 'GetUsersUserCanActAsProxyFor' como' GetProxyData' parecen ajustarse a los requisitos de GET (seguro, idempotente), por lo que solo es cuestión de saber cómo se diseñan los URI. – dtb
Gracias por la aclaración, dtb. Creo que leeré más sobre el paradigma REST antes de ir más allá tratando de convertir ciegamente mi WCF a WebAPI. –