2017-08-16 26 views
0

我有@Entity調用Scenario。我有一個@Repository爲它和春天的數據休息,爲CRUD操作生成MVC控制器。路徑是/api/scenarios。作品。使用自定義MIME類型創建實體作爲除了彈簧數據其餘控制器

我希望能夠POST/api/scenarios端點不僅與默認的JSON也與multipart/form-data所以我可以創建Scenario從一個文件中,用戶上傳。我試圖創建自定義@Controller

@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) { 
     ... 
    } 
} 

有了這個上傳的作品multipart/form-data但我可以不再與GET訪問enpoint。我得到方法不允許。就好像我的自定義控制器隱藏了由spring data rest生成的那個。

有沒有辦法如何在現有的控制器上添加這樣的自定義POST,所以我可以用JSON和application/form-data MIME類型創建我的Scenario

回答

1

您需要指定此自定義控制器爲存儲庫控制器比Spring將您的自定義方法添加到該生成的控制器。

請注意,您不需要將api基本路徑添加到您的控制器映射中。所以,你的映射這裏是"/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

是的,在'/ scenarios' VS'/ API/scenarios'是我錯過的部分。我試過'@ RepositoryRestController',但由於路徑錯誤而沒有運氣。謝謝! –

相關問題