在Spring Boot \ MVC控制器中处理REST样式映射的正确方法是什么?

时间:2017-01-03 10:37:52

标签: java spring rest spring-mvc spring-boot

我正在开发一个实现REST Web服务的Spring Boot应用程序。

因此,我对必须用于处理数据库中项目插入的URL存在以下疑问。

所以基本上我有这个控制器类:

@RestController
@RequestMapping("/AccomodationMedia")
public class AccomodationMediaController {

    ..............................................................
    ..............................................................
    ..............................................................

    @RequestMapping(value = "/doUpload", method = RequestMethod.POST)
    public String handleFileUpload(HttpServletRequest request,
                                   @RequestParam MultipartFile[] fileUpload) throws Exception {

        System.out.println("handleFileUpload() START");
        if (fileUpload != null && fileUpload.length > 0) {
            for (MultipartFile currentFile : fileUpload){

                System.out.println("Saving file: " + currentFile.getOriginalFilename());

                accomodationMediaService.saveAccomodationMedia(currentFile);

            }
        }

        return "Success";
    }

}

因此,此类包含 handleFileUpload()方法,该方法处理针对URI的 POST Http请求: / AccomodationMedia / doUpload 以上传文件。

此URI不是休息样式,因为它包含一个动作,在这种情况下,我必须将其作为resoure处理。

我的疑问是:我认为要插入一个新的 AccomodationMedia 资源,我只需要将 POST requesto传递给 / AccomodationMedia URI,因为我在数据库中插入了一个新的 AccountMedia 资源。这是对的吗?

1 个答案:

答案 0 :(得分:2)

是的,你是对的,休息应用程序中的每个资源都应该至少有一个URI标识它。当URI有意义并充分描述资源时,它是最好的,例如: -

要在系统中插入(创建)新客户,我们可能会使用: 发布http://www.example.com/customers

要阅读客户ID为#33245的客户: 获取http://www.example.com/customers/33245相同的URI将分别用于PUT和DELETE,以进行更新和删除。