我的api控制器中有两个方法,它们具有相同的名称和相同数量的参数,但其中一个参数的类型不同。你可以在这里看到
[HttpGet]
public dynamic Add(String organizationId, Driving driving)
[HttpGet]
public dynamic Add(String organizationId, bool driving)
我试图像这样打电话给api
var data {organizationId: "something", driving: true };
var ajaxConfig = {
url: some url,
type: "GET",
dataType: 'json',
crossDomain: true,
success: function (data) {
onDone();
callback(data);
},
error: function (error, textStatus, errorThrown) {
}
};
ajaxConfig.data = data;
$.ajax(ajaxConfig);
系统在调用哪个API之间感到困惑。我做错了吗?还有其他方法吗?
答案 0 :(得分:2)
您可以使用attribute routing使方法指向控制器中的不同路径
[HttpGet]
[Route("api/controller/add1")] // Url http://url.domain.com/api/controller/add1
public dynamic Add(String organizationId, Driving driving)
[HttpGet]
[Route("api/controller/add2")] // Url http://url.domain.com/api/controller/add2
public dynamic Add(String organizationId, bool driving)
答案 1 :(得分:1)
控制器只能以两种方式区分两个名称相同的方法:
如果您不想在客户端中进行区分,并且您希望服务器进行区分,则需要采用其他方法。
您可以创建一个这样的方法:
[HttpGet]
public dynamic Add(String organizationId, object driving)
{
if (driving is Driving)
// execute code
else
// execute other code
}
这个例子远未完成,但它可能是一种方法。
关于, 约翰