我有一个简单的Web API应用程序,可以将GET
或POST
数据发送给用户。
数据是一个简单的字符串数组["foo", "bar"]
。如果我尝试向Web API发送POST
数据,则数据会成功读入POST
方法,但在通过其他调用返回到Web API时,之前发布的数据将不再存在。
如何将数据保存在每个POST
的服务器上。
这就是我服务器上的内容:
[HttpPost]
public HttpResponseMessage Post([FromBody]string value)
{
data.Add(value);
var msg = Request.CreateResponse(HttpStatusCode.Created, "Added element");
msg.Headers.Location = new Uri(Request.RequestUri + "/" + (data.Count - 1).ToString());
return msg;
}
使用POST
发送data = John Doe
会将其添加到List<String>
被叫数据中,但在返回服务器时不会保留。
这就是我调用服务器的方式:
$.ajax({
url: url,
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(data), // data = "John Doe"
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
基本上,在向"John Doe"
发送POST
时,如何使List<String> data = ["foo", "bar", "John Doe"]
在服务器上保持不变。制作$window.localStorage
答案 0 :(得分:2)
List<String> data =
根本无法工作并且持续存在,因为您希望在API控制器中定义该列表,并且在每次请求后都会销毁它,因为每次请求都会获得新的控制器实例。
如果你真的想通过使用任何类型的缓存机制分布式缓存(如Cache
或非分布式缓存)来持久化Redis
数据。