2016-11-22 17 views
1

私は以下のルーティングを持っています。これは呼び出しで動作します/api/demo/info/34AspNet.Core WebApiアプリケーションのクエリ文字列を含む[HttpGetAttribute]を使用してルーティングする方法は?

[Route("api/demo")] 
public class Demo : Controller 
{ 
    [HttpGet("Info/{x}")] 
    public JsonResult GetInfos(string x) { ... } 
} 

、私はそうのように、IDを選択するために、クエリ文字列を渡したいのですが:/api/demo/info?x=34。その属性をどのように言い換えるべきですか?

[HttpGet("Info?x={x}")]と入力したときに、疑問符が有効ではないというエラーメッセージが表示されました。私はそれを属性アプローチで解決したいのですが、デフォルトマッピングからのルーティングはオプションではありません。 GetInfos(string x)としてメソッドのシグネチャを維持しながら

[HttpGet("Info")] 

答えて

2

あなたがする必要がある必要があるすべてはあなたのよう属性を宣言することです。 GETルートでは、WebAPIはシグネチャからすべてのパラメータを取得し、ルートに存在しないパラメータは、クエリ文字列の名前がパラメータの名前と一致する限り、クエリ文字列引数として渡すことができます。

1

ルートからパラメータを削除するだけで、フレームワークはアクションのパラメータに基づいてそれを解釈します。

[Route("api/demo")] 
public class Demo : Controller { 
    //GET api/demo/info?x=34 
    [HttpGet("Info")] 
    public JsonResult GetInfos(string x) { ... } 
} 
関連する問題