请求方法'GET'不支持,方法不允许,状态= 405

时间:2020-08-21 08:37:43

标签: spring-boot

Request method 'GET' not supported, Method Not Allowed 405()

当我在控制器类中使用@DeleteMapping时,遇到了上述类型的错误。首先,我没有在DeleteMapping中使用“ path”,而是直接提供了路径,然后又遇到了同样的错误,为什么会出现这种类型的错误。请说出导致这种类型错误的主要原因是什么,以及如何解决Controller.java

package com.main.AngBoot.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import com.main.AngBoot.bean.Product;
import com.main.AngBoot.service.ProductHardcodedService;

@CrossOrigin(origins="http://localhost:4200")
@RestController
public class ProductController {
    @Autowired
    private ProductHardcodedService prodService;
    @GetMapping("/users/{productname}/prodct")
    public List<Product> getAllProducts(@PathVariable String productname){
        return prodService.findAll();
        
    }
    @DeleteMapping(path="/users/{productname}/prodct/{id}")
    public ResponseEntity<Void> deleteProduct(@PathVariable String productname,
            @PathVariable long id){
        Product product = prodService.deleteById(id);
        if (product != null) {
            return ResponseEntity.noContent().build();
        }
        return ResponseEntity.notFound().build();
    }

}

我在Chrome浏览器中收到此错误 enter image description here

邮递员遇到了同样的错误 enter image description here

1 个答案:

答案 0 :(得分:2)

@DeleteMapping(path="/users/{productname}/prodct/{id}")

这里您使用的是@DeleteMapping,这意味着您应该为此端点发送一个HTTP DELETE请求。之所以收到Method Not Allowed,是因为您发送的HTTP GET请求是不允许的,因为您没有为@DeleteMapping消息映射带有HTTP GET的映射方法。< / p>