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();
}
}
答案 0 :(得分:2)
@DeleteMapping(path="/users/{productname}/prodct/{id}")
这里您使用的是@DeleteMapping
,这意味着您应该为此端点发送一个HTTP DELETE
请求。之所以收到Method Not Allowed
,是因为您发送的HTTP GET
请求是不允许的,因为您没有为@DeleteMapping
消息映射带有HTTP GET
的映射方法。< / p>