我正在尝试开发一个api,允许在同一地址发送和发布请求。
public class DataController : ApiController
{
[HttpGet]
public DataResponse Foo()
{
return GetNext();
}
[HttpPost]
public void Foo(long p1, string p2)
{
SaveValue(p1,p2);
}
}
GET
运行正常。调用POST
方法时,出现以下错误:
请求的资源不支持http方法'POST'
我的WebApiConfig如下所示:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.EnableCors();
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{action}");
}
}
知道我需要改变什么才能让它发挥作用吗?
答案 0 :(得分:1)
你可以用两种方式做到这一点 -
1-更改您调用API的方式,即传递url中的值,如<url>?p1=value&p2=value
2-将Web API中的Action的签名更改为
public void Foo([FromBody] MyContract data)
其中MyContract
是一个具有两个属性的类
public class MyContract
{
public long p1 { get; set; }
public string p2 { get; set; }
}
这是因为默认情况下,参数绑定是通过URL完成的,并且您将它们传递给正文。