0

所以周围有很多例子,但找到与 rtm 位相关的例子似乎有点难找到。

我有 2 个项目,一个是 WebApi,另一个是 MVC4 .net 4.5 应用程序。

我想对项目进行更新

我的 API 中有一个控制器,它执行类似的操作

    [HttpPut]
    public MyModel Update(MyModel model)
    {
        //make update
        return model;
    }

这个对吗?我应该使用 HttpResponseMessage 而不是只使用 MyModel 类吗?我想尽可能多地返回正确的 httpstatus 详细信息,因为我想将此 api 开放给第 3 方,而不仅仅是我的应用程序

从我的控制器从我的 mvc 应用程序调用这个 api 我该怎么做?

4

2 回答 2

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;
}
于 2012-08-31T10:09:29.223 回答
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);
于 2012-08-31T09:47:05.203 回答