2017-08-16 3 views
0

Scenarioという@Entityがあります。私はそれのために@RepositoryとCRUD操作のためのMVCコントローラを生成するスプリングデータ休憩を持っています。パスは/api/scenariosです。作品。スプリングデータレストコントローラに加えてカスタムmimeタイプのエンティティを作成

私はので、私はそのユーザーのアップロードファイルから私のScenarioを作成することができ、デフォルトJSONでもmultipart/form-dataだけではなく/api/scenariosエンドポイントにPOSTにできるようにしたいです。私は、カスタム@Controller作成しようとしたん:これでmultipart/form-data作品のアップロードを

@RestController 
public class ImportController { 

    @ResponseStatus(HttpStatus.CREATED) 
    @RequestMapping(value = "/api/scenarios", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 
    public ResponseEntity<Void> uploadScenario(@RequestPart(name = "scenario") MultipartFile scenarioFile) { 
     ... 
    } 
} 

を私はもはやGETでenpointにアクセスすることができます。私はメソッドが許可されていないを取得しています。私のカスタムコントローラが春のデータの残りによって生成されたものを隠しているように。

このようなカスタムPOSTを既存のコントローラの上に追加する方法はありますか?ScenarioをJSONとアプリケーション/フォームデータの両方のMIMEタイプで作成できますか?

答えて

1

このカスタムコントローラをリポジトリコントローラとして指定する必要があります。これは、Springがカスタムメソッドをその生成されたコントローラに追加するためです。

コントローラのマッピングにapiベースパスを追加する必要はありません。だから、ここあなたのマッピングがうん、 `/ API/scenarios`対`/scenarios`私は逃した部分だった"/scenarios"、ない"/api/scenarios"

@RepositoryRestController 
    @RequestMapping("/scenarios") 
    public class ImportController { 

    @ResponseStatus(HttpStatus.CREATED) 
    @RequestMapping(method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 
    public ResponseEntity<Void> uploadScenario(@RequestPart(name = "scenario") MultipartFile scenarioFile) { 
     ... 
    } 
} 
+0

です。私は '@ RepositoryRestController'を試しましたが、間違ったパスのため運がありませんでした。感謝! –

関連する問題