2

私は最初の Web API に取り組んでおり、これらの URL のルールを作成しようとして立ち往生しています

1) http://mydomain.com/values/4 --> this number can be any, this is just an example
2) http://mydomain.com/values/
3) http://mydomain.com/values/?param1=test1&param2=test2
4) http://mydomain.com/values/?param1=test1
5) http://mydomain.com/values/?param2=test2

私の現在のルーティングルールは

routes.MapHttpRoute(
    name: "Route1",
    routeTemplate: "{controller}/{id}/"
);
routes.MapHttpRoute(
    name: "Route2",
    routeTemplate: "{controller}/{param1}/{param2}",
    defaults: new { param1 = RouteParameter.Optional, param2 = RouteParameter.Optional }
);

そして、これらのURLを提供する私のメソッド

// GET values/
// GET values/?param1=test1&param2=test2
// GET values/?param1=test1
// GET values/?param2=test2
public IEnumerable Get(string param1, string param2)
{
    return new string[] { "value1", "value2" };
}

// GET values/5
public string Get(int id)
{
    return "value";
}

2つの問題があります

1)http://mydomain.com/values/解決しない

2)解決http://mydomain.com/values/?param1=test1http://mydomain.com/values/?param2=test2ていません。

これらの URL を提供するためのルートを作成するのを手伝ってもらえますか?

4

2 に答える 2

5
routes.MapHttpRoute(
    name: "Route1",
    routeTemplate: "{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

あなたが必要とすることをすべきです。クエリ文字列パラメーターは、名前が同じである限り、アクション パラメーターに既にマップされているため、ルートに追加する必要はありません。

于 2012-07-17T19:16:18.290 に答える
2

まず、ルートは必要ありません

routes.MapHttpRoute(
  name: "Route2",
  routeTemplate: "{controller}/{param1}/{param2}",
  defaults: new { param1 = RouteParameter.Optional, param2 = RouteParameter.Optional }
);

次に解決http://mydomain.com/values/するには、パラメータをidオプションにしてオプションにする必要がありますint?

// GET values/5
public string Get(int? id)
{
  return "value";
}
于 2012-07-17T17:33:33.563 に答える