2

免責事項: 私は ServiceStack を初めて使用します

次のサービスが与えられた場合:

public class TestService : Service
{
    public TestResponse Get(Test request)
    {
        if (String.IsNullOrEmpty(request.Message))
            throw new ArgumentException("Message is required");

        return new TestResponse();
    }
}

および次の要求/応答 DTO :

[Route("/test", "GET")]
public class Test : IReturn<TestResponse>
{
    public string Message { get; set; }
}

public class TestResponse
{
    public IList<Test> TestList { get; set; }
}

/testにアクセスしようとすると、次の応答が期待されます。

{
    "responseStatus": {
        "errorCode": "ArgumentException",
        "message": "Message is required",
        "errors": []
    }
}

代わりに、空の JSON 応答が返されます。ただし、正しいステータス コード (400 Bad Request) を返しています。

ServiceStack でこのように DTO に名前を付けるのは、Something に続いて SomethingResponse を使用するのが一般的だと思いました。シリアル化された ResponseStatus オブジェクトとして例外を返すようにするには、リクエスト DTO の名前を Test から TestRequest に変更するか、レスポンス DTO に ResponseStatus プロパティを含めることができることを発見しました。

これは予想される動作ですか?

アップデート

応答 DTO の名前が Response (大文字と小文字を区別) で終わる場合にのみ問題が発生することを含める必要があります。リクエスト/レスポンス DTO がそれぞれ Foo と Bar と呼ばれている場合、適切にフォーマットされた JSON レスポンスとエラーを受け取ります。

4

1 に答える 1