首页 > 解决方案 > Java DeleteMapping 方法不允许

问题描述

我正在尝试创建一个 api 来从存储中删除某个 ID;这是我的代码。

API 控制器:

@DeleteMapping("{cId}")
@ResponseStatus(HttpStatus.OK)
public String delete(@PathVariable String cId) {
    compareService.delete(cId);

    return "redirect:/compare";
}

服务:

public void delete(String cId) {
    compareLogic.delete(cId);
}

逻辑:

 public void delete(String cId){
        System.out.println("A: " + sessionModel.getCIds());
        List<String> update = sessionModel.getCIds();
        update.remove(new String(cId));
        System.out.println("B: " + sessionModel.getCIds());
      }

但是,当我执行 api 它显示

{
success: false,
warning: false,
error: "405",
error_description: "Method Not Allowed"
}

仅查看代码是否有任何可能的原因?非常感谢,

标签: javaspring

解决方案


只是我已经厌倦了简单的代码片段,请您尝试理解并(也尝试遵循我的建议)

当您从浏览器端(从地址栏)点击时,它不适用于 POST/PUT/DELETE 调用,它实际上是在浏览器中工作的,如果您尝试在地址栏中输入,那么它是一个 GET 请求,那么它不会支持其他格式

只是我添加了两个我厌倦了浏览器和 PostMan 的屏幕截图

首先我厌倦了邮递员(它工作得很好)

在此处输入图像描述

其次我厌倦了浏览器(它会抛出不支持的异常)

在此处输入图像描述

我已经厌倦了小代码片段,只需从您的代码中复制并从列表中删除元素

@DeleteMapping("{cId}")
    public String delete(@PathVariable String cId) {
         List<String> arr=new ArrayList<String>(3);
         arr.add("A");
         arr.add("B");
         arr.add("C");
         arr.remove(cId);
         for (String string : arr) {
            System.out.println(string);
        }

        return "redirect:/compare";
    }

推荐阅读