1

アカウント用の REST サービスがあります。コントローラーは、サービス層を呼び出してアカウントを見つけます。AccountService はドメイン例外をスローできます。通常はクライアントの入力エラーに関するケースです。このような状況では、ドメイン例外を ClientException でラップしたいと考えています。クライアントにステータス コード 400 と例外メッセージだけを表示する方法はありますか? または、サービス層が不正な引数を検出した状況を処理するためのより良い方法はありますか?

@Controller
class AccountController
    @ResponseBody
    @RequestMapping("/accounts/${accountId}")
    public Account account(@PathVariable int accountId, HttpServletResponse response){
        try{
            return accountService.find("Account not found with id: " + accountId);
        }catch(Exception e){
            response.setStatus(400);
            throw new ClientException(e);
        }   
    }
}

class AccountService{
    public Account find(int accountId){
        if(acountId > 100){
            throw new AccountNotFoundException(accountId);
        }else{
            return new Account(accountId, "someone");
        }
    }
}   
4

2 に答える 2

0

例外を受け取り、それを JSON 応答オブジェクトにマーシャリングする例外ハンドラーを作成できます。

私はこれを少し前に行いましたが、うまくいきましたが、共有するソースコードをもう持っていることはわかっています。.

出発点として、Spring MVC の例外ハンドラーを見てください。

于 2013-01-26T09:41:18.247 に答える
0

これが REST サービスの場合は、応答ステータスと JSON 本文 (エラー メッセージ付き) を設定するだけで十分です。その ClientException をスローする必要はありません。

于 2013-01-26T07:21:02.553 に答える