2

私はこのような単純なセッションオブジェクトを持っています

[Route("/Session", Summary = "Creates a security session", Notes = "Some session related notes here")]
public class Session : IReturn<SessionResponse>
{
    [ApiMember(Name = "DomainName", Description = "The Security Domain", ParameterType = "path", DataType = "string", IsRequired = true)]
    public string DomainName { get; set; }

    [ApiMember(Name = "UserName", Description = "The User Name", ParameterType = "path", DataType = "string", IsRequired = true)]
    public string UserName { get; set; }

    [ApiMember(Name = "Password", Description = "The password", ParameterType = "path", DataType = "string", IsRequired = true)]
    public string Password { get; set; }
}

私が闊歩UIに行くとき、私は要素を見ることができます

ただし、要素を入力して今すぐ試すを押すと、リクエストの内容がサーバーに送信されていないことがわかります。

parameterType="path" で poco を正しく構成しましたか、それともここで何か他のことをする必要がありますか? お知らせ下さい。

4

4 に答える 4

2

body パラメーター定義でパスパラメーターを確認せずにこれを機能させるための更新はありましたか?

[Route("/users/{UserId}/races", "POST", Summary = "Associates a race with a user")]
public class AddUserRace : IReturnVoid
{
    [ApiMember(Description = "User Id to associate a race with to", ParameterType = "path", Verb="POST", DataType = "int", IsRequired = true)]
    public int UserId { get; set; }
    [Description("Race Id of race to associate with user")]
    public int RaceId { get; set; }
}

Swagger UI の結果

理想的には、UserId はパス パラメータであるため、DTO 本体から隠したいと思います。

于 2013-11-13T18:39:56.823 に答える
1

ServiceStack の Swagger の現在の実装を使用してリクエスト本文でデータの送信をサポートするには、正確に 1 つApiMemberを指定する必要がParameterType = "body"あります (たとえば、URL に変数がある場合は、他の ApiMember 属性と他の ParameterType 値を使用できます)。

ApiMemberwithは、リクエスト本文のParameterType = "body"コンテンツ全体を表します。リクエスト DTO のどのプロパティをこの属性で装飾するかは問題ではありません。textareaSwagger UI で、このために生成されたApiMemberを使用してリクエスト本文全体を入力する必要があることを明確にするために、次のようなことを行います。

[ApiMember(Name = "RequestBody", ParameterType = "body", IsRequired = true,
    Description = SomeLongStringConstantThatDescribesTheEntireDTO]

Swagger UI では、これにより が表示さtextareaれます。このテキスト領域に DTO 全体を JSON として入力する必要があります。あなたの場合、それは次のようになります:

{"DomainName": "...", "UserName": "...", "Password": "..."}
于 2013-04-26T03:06:40.650 に答える
1

parameterType="path" で poco を正しく構成しましたか、それともここで何か他のことをする必要がありますか?

私はそうは思わない。各セッション プロパティを構成して、ParameterType='path'各プロパティをパス/URL を持つ変数/フィールドにすることを提案します (ドキュメントはこちら)。したがって、「パス」を使用する場合は、ServiceStack ルートを次のようにする必要があります。

[Route("/Session/{DomainName}/{UserName}/{Password}"]

私にとっては、「クエリ」または「本文」の方が適しています。また、これには有用な情報も含まれている可能性があります

于 2013-03-21T06:01:57.607 に答える