6

このクエリ文字列の値を DTO オブジェクトに取得する方法を見つけようとしています。

example.org?code=abc

コードの値を AuthorizationCode プロパティにマップする必要があります (パラメーター名も一致しません)。このようにルーティングしようとしましたが、うまくいきません。

[Route("?code={AuthorizationCode}", "GET")]
public class Registration
{
    public string AuthorizationCode { get; set; }
}

これはコールバック URL であるため、変更する機会がありません。どうすればこれを達成できますか?

4

1 に答える 1

11

ServiceStack の Routes に関する以前の回答をお読みください。ルートには、/path/infoすべてのリクエスト DTO を自動的に入力できる queryString を含めないでください。

DTO に次のようなコード プロパティがある場合:

[Route("/registration", "GET")]
public class Registration
{
    public string Code { get; set; }
}

あなたはすでにそれを移入することができます: /registration?code=abc.

それ以外の場合は、queryString と DTO に異なる名前を付けたい場合は、DTO に次のように注釈を付けてエイリアスを作成してみてください[DataContract]

[Route("/registration", "GET")]
[DataContract]
public class Registration
{
    [DataMember(Name="code")]
    public string AuthorizationCode { get; set; }
}

どちらの方法でも、サービスまたはフィルターで常に QueryString に直接アクセスできます。

public MyService : Service 
{
    public object Post(Registration request) 
    {
        var code = base.Request.QueryString["code"];
    }
}
于 2013-03-17T16:15:02.887 に答える