所以有一堆例子,但找到与rtm位相关的例子似乎有点难以找到。
我有2个项目,一个是WebApi&另一个是MVC4 .net 4.5应用程序。
我想对项目进行更新
我的API中有一个类似
的控制器 [HttpPut]
public MyModel Update(MyModel model)
{
//make update
return model;
}
这是对的吗?我应该使用HttpResponseMessage而不是仅使用我的MyModel类吗?我希望尽可能多地返回正确的httpstatus详细信息,因为我想打开这个api给第三方而不仅仅是我的应用程序
从我的控制器调用我的mvc应用程序中的api我该怎么办?
答案 0 :(得分:0)
最好的方法是使用像这样的HttpResponseMessage:
[HttpPut]
public HttpResponseMessage Update(MyModel model)
{
if(notfound)
{
return this.Request.CreateResponse(HttpStatusCode.NotFound);
}
//make update
return this.Request.CreateResponse<MyModel>(HttpStatusCode.OK, Model);;
}
如果我想从我的MVC应用程序中调用WebApi方法,我主要使用EasyHttp:
var model = new ExpandoObject(); // or use a stronly typed class.
model.Id = 1,
model.Name = "foo"
var http = new HttpClient();
http.Post("url", model, HttpContentTypes.ApplicationJson);
答案 1 :(得分:0)
如果你想用httpstaus代码回复,你必须返回HttpResponseMessage。
您可以选择使用通用方法返回BO并从Action和其他mvc应用程序代码中调用它。然后,您的其余调用将始终包含状态代码,其他调用将获得一个对象。
[HttpPut]
public MyModel Update(MyModel model)
{
return base.Request.CreateResponse<MyModel>(HttpStatusCode.OK, UpdateModel(model));;
}
[NonAction]
internal MyModel UpdateModel(MyModel model)
{
//make update
return model;
}