I'm learning WebAPI (and REST in general) by converting an existing WCF service to WebAPI. In the process, I'm becoming confused as to the best way to handle the non-CRUD operations. Here is my Service Contract:
[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);
}
Some of the methods, like DeleteProxy, and AddProxy I can easily move to a CRUD-based methodology.
The questions arise around:
GetProxyData - The proxy system is used by multiple applications, and though I could do api/Proxy/1, I feel that's "cheating" because that should be for getting ProxyId 1, not Proxies for Application 1.
GetUsersCurrentUserCanActAsProxyFor - This one is confusing on multiple levels for me. How should I handle multiple parameters? And it's not falling neatly into the CRUD method, either.
Does this mean I should abandon the WebAPI conversion? If not, how should I tackle these non-standard methods?