我的控制器方法编写如下:
public class WorkerController : ApiController
{
//POST
//api/worker/unregister/<id>
//http body:
//status=<status>
[HttpPost]
public void Unregister(int status)
{
//stuff
}
}
每当我提出请求时,都会说资源未找到(404)。
接线的正确方法是什么?
编辑:使用PostMan chrome扩展程序连接呼叫 - 休息客户端:
http://localhost:xxxx/api/worker/unregister/3
...然后像往常一样传递post参数。其x-www-form-urlencoded
更新
尝试以下方法:
public class WorkerController : ApiController
{
[HttpGet]
public void Unregister(int id, int status)
{
//stuff
}
}
...并传递了如下网址:
http://localhost:xxxx/api/worker/unregister/3?status=-1
这很有用!
但为什么没有其他工作。这是WebApiConfig.cs中的代码:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "ServiceApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
答案 0 :(得分:1)
在您的控制器中,您使用status
作为参数名称,而在WebApiConfig.cs
中您使用id
作为参数名称
像这样更改WebApiConfig.cs
config.Routes.MapHttpRoute(
name: "ServiceApi",
routeTemplate: "api/{controller}/{action}/{status}",
defaults: new { status = RouteParameter.Optional }
);
答案 1 :(得分:-1)
您必须传递模型。
public class fooModel
{
public int status {get; set;}
}
该行动应重写如下:
public void unregister(int id, fooModel m)
{
Debug.Print(m.status);
}