Asp.net web api 如何发布到模式/api/{controller}/{action}/{id}的url?
我的控制器方法编写如下:Asp.net web api 如何发布到模式/api/{controller}/{action}/{id}的url?,asp.net-web-api,asp.net-web-api-routing,Asp.net Web Api,Asp.net Web Api Routing,我的控制器方法编写如下: public class WorkerController : ApiController { //POST //api/worker/unregister/<id> //http body: //status=<status> [HttpPost] public void Unregister(int status) { //stuff } } p
public class WorkerController : ApiController
{
//POST
//api/worker/unregister/<id>
//http body:
//status=<status>
[HttpPost]
public void Unregister(int status)
{
//stuff
}
}
public void unregister(int id, fooModel m)
{
Debug.Print(m.status);
}
…然后我像往常一样传递post参数。其x-www-form-urlencoded
更新:
尝试了以下操作:
public class WorkerController : ApiController
{
[HttpGet]
public void Unregister(int id, int status)
{
//stuff
}
}
…并传递url,如下所示:
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 }
);
}
}
在控制器中,您使用了
status
作为参数名,而在WebApiConfig.cs
中,您使用了id
作为参数名
像这样更改您的WebApiConfig.cs
config.Routes.MapHttpRoute(
name: "ServiceApi",
routeTemplate: "api/{controller}/{action}/{status}",
defaults: new { status = RouteParameter.Optional }
);
啊,我想出来了
你必须通过一个模型。
public class fooModel
{
public int status {get; set;}
}
该行动应重新编写如下:
public class WorkerController : ApiController
{
//POST
//api/worker/unregister/<id>
//http body:
//status=<status>
[HttpPost]
public void Unregister(int status)
{
//stuff
}
}
public void unregister(int id, fooModel m)
{
Debug.Print(m.status);
}
你能告诉我你是怎么称呼你的朋友的吗method@Nilesh增加了更多的道歉。我可能没有提到我需要
id
和status
作为请求的一部分。我意识到,当我提到我像往常一样传递post参数时,这并不是暗示。@deocwalk我没有得到你的答案。。你到底想要什么<代码>路线,同时将id
和状态
作为参数not路线
。我想让它成为http请求的一部分。不确定是否可以将这两个值都输入到路径中
。我学到的是,路由
为我提供了id
的值(因为我是这样配置的),除非我有一个相应的模型来捕获状态
(我作为http主体传递),否则我无法获得状态
的值。因此,在动作的定义中需要一个模型。