我以前在MVC中创建了POST/GET请求。
在我的HomeController里
[HttpPost]
public string Index(int Value)
{
return Value.ToString();
}并使用窗体数据设置铬扩展邮递员。
我可以用变量' value‘和值'1’调用http://localhost/mvcApp/,并得到字符串'1‘作为回报
但是当我创建一个surveyController : ApiController时,当我调用http://localhost/mvcApp/api/survey/时不起作用
public string Post(int Value)
{
return Value.ToString();
}"Message":“没有找到与请求URI‘http://localhost/mvcApp/api/survey/’匹配的HTTP资源。” "MessageDetail":“在与请求匹配的控制器‘调查’上没有发现任何操作。”
我不确定错误是在创建api的方式上,还是在POSTMAN试图调用api的方式上。因为那个'.'
也可以试试我的HomeControler索引
client.BaseAddress = new Uri("http://localhost/mvcApp");
var result = client.PostAsync("/api/survey", new
{
Value = 1
}, new JsonMediaTypeFormatter()).Result;
if (result.IsSuccessStatusCode) // here return Not found发布于 2015-03-13 04:00:28
这可不容易。看了很多书之后,我就这样解决了。
首先,api控件需要用FromBody属性定义输入参数。
// POST api/survey
public void Post([FromBody]string value)
{
}为了进行测试,我在视图中放置了一个按钮,并使用Ajax / Post,变量名必须是变量值之前的空字符串。
$(document).ready(
$('#post').click(function () {
var url = 'http://localhost/mvcApi/api/survey';
var data = { "": 'Hola' }; // Define a simple variable this way
$.ajax({
type: "POST",
url: url,
data: data,
success: sucess
}
});
})或者如果您想发送多个值
data = { "": ["update one", "update two", "update three"] };

但是如果你想接收一个对象
public void Post(Survey data)
{
string value = data.Value.ToString();
}
$('#post').click(function () {
....
var data = { value: 25 }这里有发送数据和绑定的更多信息
发布于 2015-03-12 21:20:01
WebApi控制器的约定与普通的ol控制器不一样。
基本上,问题在于您不能以您所做的方式指定int参数。
在您的WebApi控制器中尝试这样做:
// nested helper class
public class PostParams {
public int Value { get; set; }
}
public string Post(PostParams parameters) {
return parameters.Value.ToString();
}看看那是怎么回事。
下面是一篇关于将POST请求中的参数传递给WebAPI控制器的详细文章:Passing-multiple-POST-parameters-to-Web-API-Controller-Methods
长话短说,这些都是惯例,粗略地说:
编辑
如果希望使用WebAPI测试C#服务器,可以执行以下步骤:
Program.cs做这样的事情。以下代码使用C# 5.0 await运算符。它还使用Task类和匿名类型。我已经指出了官方的MSDN文章(点击链接),如果您对这些内容感兴趣的话。
using System.Net.Http;
using System.Threading.Tasks;
namespace ConsoleApplication1 {
class Program {
public static void Main(string[] args) {
Test().Wait();
}
private static async Task Test() {
HttpClient client = new HttpClient();
await client.PostAsJsonAsync(
"http://localhost/mvcApp/api/survey/",
new {
value = 10
}
);
}
}
}https://stackoverflow.com/questions/29020271
复制相似问题