免責事項: 私は 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 レスポンスとエラーを受け取ります。