0

そのため、周りにはたくさんの例がありますが、rtmビットに関連する例を見つけるのは少し難しいようです。

2つのプロジェクトがあります。1つはWebApiで、もう1つはMVC4.net4.5アプリケーションです。

アイテムを更新したい

API内に次のようなコントローラーがあります

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

これは正しいです?MyModelクラスを使用するだけでなく、HttpResponseMessageを使用する必要がありますか?このAPIをアプリケーションだけでなくサードパーティに公開したいので、可能な限り正しいhttpstatusの詳細を返したいです。

コントローラのmvcアプリケーションからこのAPIを呼び出すにはどうすればよいですか?

4

2 に答える 2

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 に答える
0

httpstausコードで応答する場合は、HttpResponseMessageを返す必要があります。

BOを返す一般的なメソッドを使用して、アクションおよび他の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 に答える