我试图实现一个非常简单的api。它应该实例化一个应该改变状态的电视对象(从关闭到开启,从开启到关闭)。我目前的问题是,在我改变get方法中的状态后,tv对象被重新实例化。
是否有一种简单的方法可以将对象持续时间超过一个请求?
这是我的代码:
public class TvController : ApiController
{
Tv tv = new Tv(null, null, false);
// GET: api/Tv
[HttpGet]
public bool Get()
{
if (!tv.Status) { tv.Status = true; }
else { tv.Status = false; }
return tv.Status;
}
public class Tv
{
public string Channel { get; set; }
public string Volume { get; set; }
public bool Status { get; set; }
public Tv(string channel, string volume, bool status)
{
Channel = channel;
Volume = volume;
Status = status;
}
}
}
答案 0 :(得分:1)
由于您的API是无状态的,因此您需要找到一种方法来使用某种查找表来保留请求(可能您将API密钥与其关联的对象一起存储在Redis节点中)
我不确定您是否可以将Session
与API控制器一起使用,因为这可能会打败整个点,但如果可以,您可以执行以下操作。
您的代码需要更新才能执行此操作:
if( Session["TVObject"] == null) {
Tv tv = new Tv(null, null, false);
Session.Add("TVObject", tv);
} else {
Tv tv = Session["TVObject"] as Tv;
}