我正在POSTMAN
中尝试POST
请求,但即使它到达了tomcat服务器节点,我在localhost_access.log
文件中仍收到以下错误
"POST /app/MyService/myControllerMethod HTTP/1.1" 404 1010
我的Controller类如下所示:
@Controller("myServicecontroller")
@RequestMapping({"/MyService"})
public class MyServiceController {
@RequestMapping(value = {"myControllerMethod"}, method = {RequestMethod.POST})
public String myControllerMethodBackgroundCallBack(HttpServletRequest httpReq,
@RequestBody String request) {
// rest piece of code
}
}
现在我的 Postman curl 我尝试与空数据(尝试与一些值也),但得到以上404错误响应
curl --location --request POST 'http://my-ip-address:8080/app/MyService/myControllerMethod' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'My-Header-One: lskdnansdlknalkasndl' \
--header 'My-Header-Two: sadasdsa' \
--data-raw '{}'
我做错了什么?(上面url中的app
是我的服务,在其他请求中工作正常)
同样的事情,当我尝试以下代码,它能够击中api 200
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(url);
postMethod.setRequestBody(requestString);
httpClient.setConnectionTimeout(httpReadTimeOut);
httpClient.executeMethod(postMethod);
1条答案
按热度按时间yfwxisqw1#
我已成功重现此问题,并找到了根本原因。
根本原因
myControllerMethodBackgroundCallBack方法中缺少
@ResponseBody
注解。修复
"为什么"
@Controller
注解需要@ResponseBody
注解,如果使用@RestController
注解,则不需要@ResponseBody
注解。简而言之
x一m五n一x = x一m六n一x + x一m七n一x
您可以在这里阅读更多关于
@Controller
和@RestController
的信息https://medium.com/@akshaypawar911/java-spring-framework-controller-vs-restcontroller-3ef2eb360917