黑马程序员苍穹外卖项目,“启用停用菜品/分类/套餐”功能模块

mama3925 2024-06-19 21:53:23

根据Rest开发规范,增删改查里的修改功能,应该在controller类里使用@Put注解。@Post注解用来新增

但是苍穹外卖范例代码中,所有的“启用/停用”功能都使用了@Post注解。

所以小弟不太理解,为什么修改功能要用@Post。以下奉上范例代码

SetmealController.java 套餐响应类

    /**
     * 套餐起售停售
     * @param status
     * @param id
     * @return
     */
    @PostMapping("status/{status}")
    @ApiOperation("套餐起售停售")
    public Result startOrStop(@PathVariable Integer status, Long id) {
        setmealService.startOrStop(status, id);
        return Result.success();
    }

SetmealService.java 业务接口

    /**
     * 修改套餐属性
     * @param setmeal
     */
    @AutoFill(value = OperationType.UPDATE)
    void update(Setmeal setmeal);

 SetmealServiceImpl.java 业务接口实现类

    /**
     * 套餐起售、停售
     * @param status
     * @param id
     */
    @Override
    public void startOrStop(Integer status, Long id) {
        //起售套餐时,判断套餐内是否有停售菜品,有停售菜品提示"套餐内包含未启售菜品,无法启售"
        if (status == StatusConstant.ENABLE) {
            List<Dish> dishList = dishMapper.getBySetmealId(id);
            if (dishList != null && dishList.size() > 0) {
                dishList.forEach(dish -> {
                    if (dish.getStatus() == StatusConstant.DISABLE) throw new DeletionNotAllowedException(MessageConstant.SETMEAL_ENABLE_FAILED);
                });
            }
        }
        Setmeal setmeal = Setmeal.builder()
                .id(id)
                .status(status)
                .build();
        setmealMapper.update(setmeal);
    }

具体接口设计图如下

 

...全文
884 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_b_a_b_a_b_a_b 2024-07-03
  • 打赏
  • 举报
回复

规范只是规范,@PUT @DELETE 在有些政务云服务器上会拦截,只会放行@POST和@Get请求,所以好多人写的时候,查询用Get,增、删、改都用Post

太空漫步11 2024-06-20
  • 打赏
  • 举报
回复 1

没什么吧,可能编写的人没注意规范。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧