【问题标题】:What is the correct way to handle REST style mapping in this Spring Boot\MVC controller?在这个 Spring Boot\MVC 控制器中处理 REST 样式映射的正确方法是什么?
【发布时间】:2017-01-03 10:37:51
【问题描述】:

我正在开发一个实现 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() 方法来处理 POST 对 URI 的 Http 请求:/AccomodationMedia/doUpload 以上传文件。

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

我的疑问是:我认为要插入新的 AccomodationMedia 资源,我只需要将 POST 请求发送到 /AccomodationMedia URI,因为我正在数据库中插入一个新的 AccountMedia 资源。对吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-13
      • 2016-09-17
      • 2018-10-04
      • 2015-07-09
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      相关资源
      最近更新 更多