我一直在努力解决这些问题几天。我有一个需要有多个GET和POST方法的控制器。不知何故,我设法在控制器中实现多个GET方法。那时只有一个POST方法。一切都运行良好,直到我引入了一个更多的POST方法。每当我使用ExtJS从客户端使用POST方法时,只有第一个POST方法被调用。以下是我的控制器的方法:Web API控制器中的多个GET和POST方法
[AllowAnonymous]
[ActionName("userlist")]
[HttpGet]
public List<MyApp.Entity.Models.usermaster> Get(bool isActive)
{
//My code
}
[AllowAnonymous]
[ActionName("alluserlist")]
[HttpGet]
public List<MyApp.Entity.Models.usermaster> Get()
{
//My code
}
[AllowAnonymous]
[ActionName("updateuser")]
[HttpPost]
public string UpdateUser(JObject userData)
{
//My code
}
[AllowAnonymous]
[ActionName("adduser")]
[HttpPost]
public string AddUser(JObject newUserData)
{
//My code
}
我也有两个途径配置文件。第一个具有以下配置:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
另一个文件中有如下配置:
public static void Register(HttpConfiguration config)
{
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ControllersWithAction",
routeTemplate: "api/{controller}/{action}");
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
}
这是Ajax调用是如何在API的:
Ext.Ajax.request({
url: 'localhost/myapp/api/users/adduser',
mode: 'POST',
params: {
userName: 'user',
password: 'password'
},
success: function (resp) {
var respObj = Ext.decode(resp.responseText);
if (respObj == 'added') {
Ext.Msg.alert('Success', 'User added.');
}
else {
Ext.Msg.alert('Error', respObj);
}
},
failure: function (resp) {
Ext.Msg.alert('Error', 'There was an error.');
}
});
能
人指出错误?或者,在具有路由配置的第一方控制器中使用多个GET和POST方法的任何示例都将非常有用。
你怎么叫他们? –
对于获取方法,我使用'localhost/myapp/api/users/userlist/true'&localhost/myapp/api/users/alluserlist'。对于这两种POST方法,我只使用具有不同参数的'localhost/myapp/api/users'。 – user1640256
但你打电话给他们?你如何在请求中指定它是POST还是GET? –