Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting "405 - Request method 'GET' not supported when calling" method=DELETE

I have a Spring MVC web app. In it a form with a button that's supposed to delete a resource from another resource:

<td>
    <form action="/product-bases/${productBase.id}/positions/${position.id}" method="DELETE">
        <input type="submit" value="delete" />
    </form>
</td>

My controller:

@Controller
@RequestMapping(value = "/product-bases/{id}/positions")
public class ProductBasePositionController {

    @RequestMapping(value = "/{positionId}", method = RequestMethod.DELETE)
    public ModelAndView delete(@PathVariable Integer productBaseId, @PathVariable Integer positionId) {

So in theory the server should route to the controller. But alas it does not, hence the post ;)

I'm getting

HTTP Status 405 - Request method 'GET' not supported

type Status report

message Request method 'GET' not supported

description The specified HTTP method is not allowed for the requested resource (Request method 'GET' not supported).
Apache Tomcat/7.0.19

Obviously I don't have a get for /positions/id defined yet, but why should I, I want to do a delete for now..

(I'm also trying to run this from my spring-test-mvc framework on a mock servlet without any tomcat implementation in between and it gives me a 400 - bad request.. )

So what am I missing here?

Oh, just to cut some corners: post and get will work for other resources, so the rest of my setup is fine.

The booting server even tells me:

RequestMappingHandlerMapping [INFO] Mapped "{[/product-bases/{id}/positions/{positionId}],methods=[DELETE],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView our.view.controller.ProductBasePositionController.delete(java.lang.Integer,java.lang.Integer)

Anyone as confused as I am? If less so, please enlighten me!

like image 359
Pete Avatar asked Mar 11 '26 20:03

Pete


1 Answers

Forms can be submitted via GET or POST only (maybe also PUT, but I doubt that is widely implemented), as form submission requires a method where data is transmitted to the server.

The DELETE method does not have a request body, so specifying it in a form action is unsupported.

like image 66
Simon Richter Avatar answered Mar 13 '26 10:03

Simon Richter



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!