2016-08-04 50 views
2

私はこのような注釈付きのCRUDのためRestControllerをしました:春@RequestMapping絶対パス

@RestController 
@RequestMapping("/rest/v1/area") 
public class AreaController 

私の方法は、同様に注釈を付けています

@RequestMapping(value = "/{uuid}", method = RequestMethod.PUT) 
public ResponseEntity<Area> save(@Valid @RequestBody Area area) { 

の値を使用する方法はありますメソッドは絶対パスを持っていますか?私はファイルをアップロードするためのメソッドを追加したいだけで、これのために新しいコントローラを作成したくありません。私は次のような方法が欲しい:

@RequestMapping(value = "/rest/v1/area-upload", method = RequestMethod.PUT 
public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { 

ありがとう!

+0

私はいくつかのバイパスの主義があるとは思わない、すばやく簡単な方法は、既存のメソッドのメソッド注釈で型注釈を置き換え、次に新しいメソッドを追加することです(タイプに共通のURL部分を保持できるあなたが望むならレベル) –

答えて

5

ドキュメントから:(spring 2.5 api document of requestmapping

メソッドレベルのマッピングのみマッピングを狭めるために許可されているクラスで発現レベル(ある場合)

乗って、それをサブパスに絞るだけです。

もちろん、新しいコントローラクラスを作成してそこにメソッドを配置すると、好きなパスを指すようにすることができます。

+0

正しい方向に私を向けるための@ジョーブレードありがとう。私は私のバージョンをチェックしました:http://docs.spring.io/spring-framework/docs/4.3.2.RELEASE/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html これはまだ適用されます。 回避策をお寄せいただきありがとうございます。他のすべてのマッピングを変更せずにこれが可能かどうかを確認しました。 – German

2

コントローラのルートマッピングを変更することができます。

@RestController 
@RequestMapping("/rest/v1") 
public class AreaController 

及び方法のマッピングは次のようになります

@RequestMapping(value = "/area-upload", method = RequestMethod.PUT 
public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {