[java] Spring MVCコントローラメソッドが値を返さない場合に返すもの


2 Answers

適切なヘッダーを指定してResponseEntityを返すことができます。

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
public ResponseEntity updateDataThatDoesntRequireClientToBeNotified(...){
....
return new ResponseEntity(HttpStatus.OK)
}
Question

私はjQueryの$.getJSON()を使用して、私の単純なSpring MVCバックエンドに非同期呼び出しを行います。 ほとんどのSpringコントローラメソッドは次のようになります:

@RequestMapping(value = "/someURL", method = RequestMethod.POST)
public @ResponseBody SomePOJO getSomeData(@ModelAttribute Widget widget,
    @RequestParam("type") String type) {
    return someDAO.getSomeData(widget, type);
}   

私は、各コントローラが@ResponseBodyをJSONとして返すように設定しています。これはクライアント側が期待しているものです。

しかし、要求がクライアント側に何らかのコンテンツを返すことになっていない場合はどうなりますか? 私はできる:

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
public @ResponseBody void updateDataThatDoesntRequireClientToBeNotified(...) {
    ...
}

そうでない場合は、ここで使用する適切な構文は何ですか? 前もって感謝します!




はい、 void戻り値の型で@ResponseBodyを使用することができます:

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
@ResponseBody
public void updateDataThatDoesntRequireClientToBeNotified(...) {
    ...
}



しかし、あなたのシステムのサイズと機能が成長するにつれ、私はいつもjsonを返すことはまったく悪い考えではないと思います。 より多くの建築/ "大規模な設計"の問題です。

あなたは、コードとデータという2つの知られているフィールドを持つJSONを常に保持することを考えることができます。 codeは、実行される操作の成功を指定する数値コードであり、dataは、要求された操作/サービスに関連する任意のデータです。

サービスプロバイダのバックエンドを使用する場合、サービスが正常に機能しているかどうかを確認することができます。

だから私は春にこれを管理させないようにして、ハイブリッドの返す操作を公開する(いくつかのデータは何も返しません...)。あなたのサーバがより均質なインターフェースを公開していることを確認してください。 一日の終わりにはもっと簡単です。




Related