1

Web API で動作するデモ モバイル アプリケーションを作成しています。私はこのサイトに従っています:

これは、Web API を呼び出す方法です。

class Program
    {
        static void Main(string[] args)
        {
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("http://localhost:9000/");

            // Add an Accept header for JSON format.
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));
        }
    }

API 関数の呼び出し方法は次のとおりです。

HttpResponseMessage response = client.GetAsync("api/products").Result;  // Blocking call!
if (response.IsSuccessStatusCode)
{
    // Parse the response body. Blocking!
    var products = response.Content.ReadAsAsync<IEnumerable<Product>>().Result;
    foreach (var p in products)
    {
        Console.WriteLine("{0}\t{1};\t{2}", p.Name, p.Price, p.Category);
    }
}
else
{
    Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
}

この行がわかりません:

HttpResponseMessage response = client.GetAsync("api/products").Result;    

api/productsアドレスを使用する場合、何と呼ばれますか? モデル、API のコントローラー クラス、またはその他の何か?

4

2 に答える 2

0

HttpResponseMessage response = client.GetAsync("api/products").ResultAPIコントローラーである製品コントローラーにリクエストを送信することを意味します。製品コントローラーがリクエストを処理したら、その結果を HttpResponseMessage のインスタンスに保存します。

ブレークポイントを設定すると、応答に製品のリストが含まれていることがわかります (これが Product コントローラーの機能だと思います)。

于 2013-11-07T12:10:38.823 に答える
0

あなたの質問への答えは、あなたが参照した最初のページにあります。

すべての製品のリストを取得するには、次のメソッドを ProductsController クラスに追加します。

public class ProductsController : ApiController
{
    public IEnumerable<Product> GetAllProducts()
    {
        return repository.GetAll();
    }
    // ....
}

メソッド名は「Get」で始まるため、慣例により GET リクエストにマップされます。また、このメソッドにはパラメーターがないため、パスに「id」セグメントを含まない URI にマップされます。

したがって、への呼び出し

HttpResponseMessage response = client.GetAsync("api/products").Result;

productsで始まり、Getパラメーターを持たないコントローラーの関数を呼び出します。

コントローラーに慣れていない場合は、ASP.NET MVC の概要で MVC パターンの詳細を確認できます。

于 2013-11-07T08:46:38.347 に答える