代码之家  ›  专栏  ›  技术社区  ›  Yu.Pan

如何在spring boot项目的controller中编写请求方法类型

  •  1
  • Yu.Pan  · 技术社区  · 7 年前

    我开发了一个 SpringBoot 项目

    在服务中 TaskServiceImpl.java :

     @Override
    public Response<Boolean> claimTask(int id, String worker) {
        try{
            taskDao.claimTask(id, worker);
            pictureDao.savePictureList(id, worker, FileTool.listPictureName(FOLDER_NAME));
            return new Response(true, "Succeed to claim task!");
        }catch (Exception ex){
            ex.printStackTrace();
            return new Response(false, "Fail to claim task!");
        }
    }
    

    我正在使用多个 DAOs 在以下服务方法中 claimTask ,但我应该如何编写相对控制器,如 TaskController .java:

    @RequestMapping(value = "claim", method = RequestMethod.POST)
    @ResponseBody
    public Response<Boolean> claimTask(int id, String worker){
        return taskService.claimTask(id, worker);
    }
    

    我在怀疑“方法”,我应该什么都不写还是只使用“方法” method = RequestMethod.POST “?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Mehraj Malik    7 年前

    我在怀疑“方法”,我应该什么都不写还是只使用 “方法=RequestMethod.POST”?

    方法的类型应该根据端点所做的工作来使用。

    根据 restfulapi 您应该使用:

    1. HTTP获取 :使用GET请求仅检索资源表示/信息,而不以任何方式修改它
    2. HTTP POST :使用POST API创建新的从属资源,例如,文件从属于包含它的目录,或行从属于数据库表
    3. HTTP PUT :主要使用PUT API更新现有资源(如果资源不存在,则API可能决定是否创建新资源)

    如果您正在使用 Spring version 4.3 or above 您可以使用 GetMapping ,则, PostMapping

        2
  •  0
  •   Satz    7 年前

    使用起来更好 @RestController (它是控制器类中@Controller和@ResponseBody的组合)。因此您可以删除 @ResponseBody 在每种方法中。

    @PostMapping("/claim")
    public Response<Boolean> claimTask(@RequestParam int id, @RequestParam String worker){
        return taskService.claimTask(id, worker);
    }
    

    我希望 value = "claim" 是URI路径。