在我们的项目中,我们有一个用@RestController注释的Controller类,它实现了一个用@RestMapping注释的接口,接口中定义的方法用@RestMapping注释。
问题当我点击具有@RequestHeader或@RequestBody参数的POST方法时,我得到“不支持请求方法'POST'”,状态代码为405,当我点击我的GET时具有@RequestHeader的方法我得到“无消息可用”,404状态代码。我通过提供
启用了调试logging.level.org.springframework.web: DEBUG
我能够看到我在方法中加入的SOP。所以它调用我的方法并执行语句而不返回值。
但是,当我停止使用接口并仅使用我的控制器类并在Controller类中定义所有注释时,无论在我的方法参数中给出@RequestHeader还是@RequestBody,它都能正常工作。
我只想知道当我使用接口定义包含@RequestHeader或@RequestBody
的方法参数时,POST调用或GET调用无效的原因以下是我的代码段:
//My Controller Class
@RestController
public class MyController implements MyInterface{
@Override
public WSResponse getPFDData(@RequestHeader(name= HttpHeaders.AUTHORIZATION) String bearerToken) throws Exception {
System.out.println("This is Printing despite of Request method 'POST' not supported error");
}
//My Interface Class
@CrossOrigin
@RequestMapping("/v1/myapi")
public interface PFDService {
@RequestMapping(method = RequestMethod.POST, value="/",produces = MediaType.APPLICATION_JSON_VALUE)
WSResponse getPFDData(@RequestHeader(name= HttpHeaders.AUTHORIZATION) String bearerToken) throws Exception;
}
以下是我在回复中收到的确切错误消息。
{
"timestamp": 1464210265555,
"status": 405,
"error": "Method Not Allowed",
"exception": "org.springframework.web.HttpRequestMethodNotSupportedException",
"message": "Request method 'POST' not supported",
"path": "/v1/myapi/"
}
对于GET方法,我得到的回应低于:
{
"timestamp": 1464210501465,
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/v1/myapi/"
}
如果您需要我的调试日志中的其他信息,请告诉我。
答案 0 :(得分:0)
正如@Nambari所提到的,您还没有创建一个设置了RequestMethod.POST的方法。这就是为什么回答说“方法不允许”。
对于GET请求: 您的问题的路径为“/ v1 / myapi”,但您的注释路径为“/ v1 / pfd /”。确保使用正确的路径。
答案 1 :(得分:0)
你应该
//Get method
@RequestMapping(method = RequestMethod.GET, value="/getPFDData",produces = MediaType.APPLICATION_JSON_VALUE)
WSResponse getPFDData(@RequestHeader(name= HttpHeaders.AUTHORIZATION) String bearerToken) throws Exception;
}
//POST method
@RequestMapping(method = RequestMethod.POST, value="/postData"){
//do your stuff here
}
您可以通过网址访问它们:
GET: /v1/myapi/getPFDData
POST: /v1/myapi/postData