休息顶部

通过参考,使用Spring 5和Spring Boot 2开始学习春天课程:

>>查看课程

1.概述

此快速文章专注于常见的错误 - “不支持的请求方法 - 405” - 开发人员面临的脸部,同时为特定的HTTP动词暴露API,具有Spring MVC。

当然,我们还将讨论此错误的共同原因。

2.请求方法基础知识

在走向常见问题之前,如果你只是开始了解春天的MVC,这是一个很好的金宝搏官网188be介绍文章开始。

让我们同时非常快速地看看基础知识 - 并了解Spring支持的请求方法以及这里的一些常见兴趣。

以高度简化的方式,MVC HTTP方法是请求可以在服务器上触发的基本操作。例如,一些方法拿来来自服务器的数据,一些提交数据到服务器,有些可能删除数据等

@requestmappping.注解指定请求的支持方法。

Spring在枚举下声明所有受支持的请求方法requestmethod.;它指定了标准获取,头,邮政,放置,补丁,删除,选项,跟踪动词。

春天Dispatcherservlet.除了默认情况下,支持所有这些选项痕迹;@requestmappping.用来RequestMethod枚举指定支持哪些方法。

3.简单的MVC情景

现在,让我们来看看一个代码示例映射所有HTTP方法:

@RestController @RequestMapping(value =“/ api”)公共类RequestMethodController {@Autowired私人员工服务服务;@requestmapping(value =“/ employees”,producate =“application / json”)public list  findemployees()revourts InvalidRequestException {return service.getemployeelist();}}

请注意该示例如何声明findemployee()方法。它没有指定任何特定的请求方法,这意味着此URL支持所有默认方法。

例如,我们可以使用不同的支持方法请求API,例如,使用CURL:

$ curl -request post http:// localhost:8080 / api /雇员[{“ID”:100,“名称”:“Steve Martin”,“ContactNumber”:“333-777-999”},{“ID“:200,”名称“:”adam schawn“,”ContactNumber“:”444-111-777“}”]

自然而然,我们可以通过简单的方式以多种方式发送请求卷曲命令,邮递员,ajax等

当然,我们期待得到的200 OK.响应,如果请求正确映射和成功。

4.问题场景 - HTTP 405

但是,我们在这里讨论的是 - 当然 - 请求不会成功的情况。

'405方法不允许“是我们在使用Spring请求时观察到的最常见错误之一。

让我们来看看,如果我们在Spring MVC中专门定义和处理获取请求,请查看会发生什么,如下所示:

@requestmapping(value =“/ empormenes”,production =“application / json”,method = requestmethod.get)public list  findemployees(){...} //使用curl $ $ curl -request发送put请求将http:// localhost:8080 / API /员工{“时间戳”:1539720588712,“状态”:405,“错误”:“不允许”方法,“例外”:“org.springframework.web.httprequestmethodnotsupportedException”,“消息“:”请求方法“放置”不支持“,”路径“:”/ API /员工“}

5. 405不支持 - 原因,解决方案

我们在这个前面的场景中得到了什么是405状态代码的HTTP响应 -表示服务器不支持请求中发送的方法/动词的客户端错误。

顾名思义,此错误的原因是以不受支持的方法发送请求。

正如您所预期的,我们可以通过定义Plois的显式映射来解决此问题,在现有方法映射中:

@RequestMapping(value =“/ empormenees”,producate =“application / json”,方法= {requestmethod.get,requestmethod.put})...

或者,我们可以单独定义新方法/映射:

@RequestMapping(value =“/ employees”,production =“application / json”,method = requestmethod.put)public list  postemployees()...

六,结论

Request方法/动词是HTTP通信中的一个关键方面,我们需要小心我们在服务器端定义的操作的确切语义,然后使用我们发送的确切请求。

并始终如一,本文中显示的示例可用在github上

休息底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程 :

>>查看课程
评论在本文上关闭!