Spring Boot Java springboot POST请求发出404

ddrv8njm  于 2022-11-05  发布在  Spring
关注(0)|答案(1)|浏览(215)

我正在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);
yfwxisqw

yfwxisqw1#

我已成功重现此问题,并找到了根本原因。

根本原因
myControllerMethodBackgroundCallBack方法中缺少@ResponseBody注解。
修复

@RequestMapping(value = {"myControllerMethod"}, method = {RequestMethod.POST})
    @ResponseBody
    public String myControllerMethodBackgroundCallBack(HttpServletRequest httpReq,
            @RequestBody String request) {
             // rest piece of code
          }

     }

"为什么"
@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

相关问题