Get-request 在网络中发送 null api
Get-request sends null in web api
我有一个 GET 请求的操作:
[HttpGet]
public string Answer([FromBody]string value)
{
CookieHeaderValue cookie = Request.Headers.GetCookies("user").FirstOrDefault();
game.LogUserAnswer(cookie["user"].Value, value);
return String.Format("<strong>{0}</strong>: {1} <br>", cookie["user"].Value, game.UserGuess(value));
}
当我尝试传递任何数据时,我得到的总是空值。我用 ajax-call:
调用动作
$('#btnAnswer').click(function () {
var value = $('#Answer').val();
$.ajax({
type: "GET",
dataType: "json",
url: uri + '/' + 'Answer' + '/' + value,
data: { '': value },
success: function (data) {
$('#resultsBox').append('<strong>' + data + '</strong><br>');
},
error: function (error) {
jsonValue = jQuery.parseJSON(error.responseText);
}
});
});
在 Fiddler 中,url 是下一个:GET /api/values/Answer/132312?=132312 HTTP/1.1
我尝试发送另一个请求:GET /api/values/Answer/132312 HTTP/1.1
但在我的操作中值仍然为空。
我还更改了 public string Answer(string value)(没有 FromBody),在这种情况下应用程序找不到需要的 HTTP
.
你能告诉我,我错过了什么吗?
*更新 1 *
var uri = 'api/values';
config.Routes.MapHttpRoute(
name: "apianswer",
routeTemplate: "Home/api/values/answer/{id}",
defaults: new { action = "Answer", id = RouteParameter.Optional }
);
获取请求没有正文!您应该将参数作为路线的一部分发送
[HttpGet]
[Route("Home/api/values/answer/{value}"]
public string Answer(string value = null //in case you want to call answer without any value provided)
{...}
$.ajax({
type: "GET",
url: uri + '/' + 'Answer' + '/' + value,
...
});
或作为查询字符串
[HttpGet]
public string Answer(string value)
{...}
$.ajax({
type: "GET",
url: uri + '/' + 'Answer',
data: {value: value}
...
});
我有一个 GET 请求的操作:
[HttpGet]
public string Answer([FromBody]string value)
{
CookieHeaderValue cookie = Request.Headers.GetCookies("user").FirstOrDefault();
game.LogUserAnswer(cookie["user"].Value, value);
return String.Format("<strong>{0}</strong>: {1} <br>", cookie["user"].Value, game.UserGuess(value));
}
当我尝试传递任何数据时,我得到的总是空值。我用 ajax-call:
调用动作$('#btnAnswer').click(function () {
var value = $('#Answer').val();
$.ajax({
type: "GET",
dataType: "json",
url: uri + '/' + 'Answer' + '/' + value,
data: { '': value },
success: function (data) {
$('#resultsBox').append('<strong>' + data + '</strong><br>');
},
error: function (error) {
jsonValue = jQuery.parseJSON(error.responseText);
}
});
});
在 Fiddler 中,url 是下一个:GET /api/values/Answer/132312?=132312 HTTP/1.1
我尝试发送另一个请求:GET /api/values/Answer/132312 HTTP/1.1
但在我的操作中值仍然为空。
我还更改了 public string Answer(string value)(没有 FromBody),在这种情况下应用程序找不到需要的 HTTP
.
你能告诉我,我错过了什么吗?
*更新 1 * var uri = 'api/values';
config.Routes.MapHttpRoute(
name: "apianswer",
routeTemplate: "Home/api/values/answer/{id}",
defaults: new { action = "Answer", id = RouteParameter.Optional }
);
获取请求没有正文!您应该将参数作为路线的一部分发送
[HttpGet]
[Route("Home/api/values/answer/{value}"]
public string Answer(string value = null //in case you want to call answer without any value provided)
{...}
$.ajax({
type: "GET",
url: uri + '/' + 'Answer' + '/' + value,
...
});
或作为查询字符串
[HttpGet]
public string Answer(string value)
{...}
$.ajax({
type: "GET",
url: uri + '/' + 'Answer',
data: {value: value}
...
});