2016-09-18 11 views
0

私は、クライアントがSpringブートを使用してマルチパートフォームデータで投稿できる簡単なRESTエンドポイントを作成しました。 RESTエンドポイントはtxtファイルを受け取り、必要な機能を実行します。しかし、リクエストが有効でないか正しくない場合、適切なHTTPレスポンスを返すことができません。私はRESTが正しくResponseEntityを使用して、適切なHTTPレスポンスとステータスを送信したい 現在のリクエストに対する現在のリクエストが正しくレスポンスを返す方法は、RESTのマルチパートリクエストではありません

@RequestMapping(value = "/create", method = RequestMethod.POST) 
public String create(@RequestParam("file") MultipartFile file) { 
    if (!file.isEmpty()) { 
     //perform some steps   
     return "file succesfully creted!"; 
    }else{ 
     logger.warn("file is empty"); 
     return "file wrong"; 
    } 
} 

よう

私のコントローラが見えます。今すぐクライアントがリクエストを行うとき

curl -X POST localhost:8080:/create -F "[email protected]" 

このリクエストでは、すべてが適切に機能します。ユーザーがファイルの添付に失敗したとか、他の間違った要求を取り込めなかったとしましょう。ディスパッチャサーブレットに入り、エラーをスローします。

{ 
    "timestamp": 1474236317572, 
    "status": 500, 
    "error": "Internal Server Error", 
    "exception": "org.springframework.web.multipart.MultipartException", 
    "message": "Current request is not a multipart request", 
    "path": "/create" 
} 

このエラーを受け取り、ユーザーに返します。私はフィルターを持っているべきですか?このフィルタはどのように書くべきですか?または試して/キャッチする必要がありますか?

+0

私は春に新たなんだけど、私はあなたがMultipartExceptionを処理するために、あなたのコントローラ内で例外ハンドラを書くことができると信じています。例外がスローされると、コントローラのハンドラメソッドが実行されます。 help.https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvcのようなものです – jmw5598

答えて

0

以下のように@ExceptionHandlerメソッドで例外を処理できます。

@ExceptionHandler(MultipartException.class) 
public ResponseEntity<String> handleMultipartException(HttpServletRequest request, Exception e) { 
    return new ResponseEntity<>("Error: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); 
} 

春がMultipartFileを解決しようとすると、例外がスローされないことができて、そのexeceptionのための充当アノテーション付きメソッドが実行されます。

編集:ここには役に立つかもしれないいくつかのリソースがあります。

https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc https://www.youtube.com/watch?v=oG2rotiGr90

関連する問題