如何在ASP.NET Web API中获取uri的请求对象?

时间:2016-07-27 20:07:44

标签: c# asp.net entity-framework asp.net-web-api2

我在团队中有一个要求,我需要创建一个api,它应该为用户提供所有可用的api和用户请求的相应请求。我打算在数据库表中保存api端点,并根据用户请求,读取并获取此uri。但我不确定如何从不同的api控制器访问与api端点关联的请求对象。

switch (service.ToUpper())
{
    case "MYFUNCTIONALITY":
        detail.endPoint = "api/myfunctionality/random";
        detail.requestObject = new AutoCreditCardTransactionRequest() { Quantity = 5, AcctmyIDs = myaccts };

        break;
    default: break;
}
return detail;

在上面的代码中,我已经硬编码了结束点,并且基于case语句,还提到了请求类。由于我需要为所有终点执行此操作,我希望将这些终点移动到DB然后从中读取,但问题是如何获取结束点的请求类而不是指定请求类< / p>

1 个答案:

答案 0 :(得分:0)

您可以使用ApiExplorer类的ApiDescriptions属性获取API端点的ApiDescription,然后使用ApiDescription.ParameterDescriptions属性访问API的输入参数。如下所示

ApiParameterDescription paramDesc; // Use appropriate code to populate this 
var type = paramDesc.ParameterDescriptor.ParameterType;
var defaultValue = paramDesc.ParameterDescriptor.DefaultValue;