我正在使用ASP.NET开发REST API,我需要在代表另一个API资源的API中的随机POST请求的主体中接受一个参数。
举个例子,假设我们有:
api/files
api/operations
两个资源表示,表示可以对文件执行的文件和操作。
假设我想通过合并两个文件的POST请求接受一个操作,我会接受一个如下对象。
operation {
name: 'merge',
parameters:
['api/files/1', 'api/files/2']
}
我想验证参数数组中提交的网址。 第一步是将URL与API路由匹配,这样我就可以告诉参数目标哪个资源。
我使用visual studio 2017创建了一个示例ASP.NET Web API项目,并调试了以下方法。除了“安排”和“行为”之外没有什么特别的东西来自here。
// GET api/values
public IEnumerable<string> Get()
{
// Arrange
var context = new StubHttpContextForRouting(requestUrl: "~/api/values");
// Act
RouteData routeData = RouteTable.Routes.GetRouteData(context);
return new string[] { "value1", "value2" };
}
routeData总是返回一个空模板的路由,我不知道它为什么存在。
这不是Test if a request's URL is in the Route table的重复。因为那个解决方案对我不起作用。
是否有任何解决方案或替代方案(除了为字符串url编写辅助解析器以匹配路由)?