我可以使用Web Api 2
从static html form
调用get
,如下所示。
Web API:
public class WebServiceController : ApiController
{
[HttpGet]
[Route("api/WebService")]
public IHttpActionResult Post(string FirstName, string Surname)
{
//work
return StatusCode(HttpStatusCode.OK);
}
}
HTML表单:
<form action="http://localhost:27020/api/WebService/" method="get">
<input type="text" name="FirstName" id="FirstName" />
<input type="text" name="Surname" id="Surname" />
<input type="submit" />
</form>
当我使用get
和post
从method="post"
切换到[HttpPost]
请求时,我会在Chrome上获得以下屏幕截图:
我做错了什么?
答案 0 :(得分:2)
WebAPI无法独立读取每个方法参数。你必须封装它们:
public class WebServiceController : ApiController
{
[HttpGet]
[Route("api/WebService")]
public IHttpActionResult Post(MyRequest request)
{
//work
return StatusCode(HttpStatusCode.OK);
}
}
public class MyRequest
{
public string FirstName { get; set; }
public string Surname { get; set; }
}
答案 1 :(得分:0)
改变web api路径
总是一个好习惯routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
到
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
之后你不需要跟随get put和post,你可以像MVC路由一样使用全名。例如。 http://yourhost/api/WebService/your_action