我通过将现有的 WCF 服务转换为 WebAPI 来学习 WebAPI(和一般的 REST)。在此过程中,我对处理非 CRUD 操作的最佳方式感到困惑。这是我的服务合同:
[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);
}
一些方法,如 DeleteProxy 和 AddProxy,我可以轻松地迁移到基于 CRUD 的方法。
问题出现在:
GetProxyData - 代理系统被多个应用程序使用,虽然我可以做 api/Proxy/1,但我觉得这是“作弊”,因为这应该是为了获取 ProxyId 1,而不是应用程序 1 的代理。
GetUsersCurrentUserCanActAsProxyFor - 这对我来说在多个层面上都令人困惑。我应该如何处理多个参数?而且它也没有完全落入 CRUD 方法中。
这是否意味着我应该放弃 WebAPI 转换?如果没有,我应该如何处理这些非标准方法?