为啥 Spring Boot 中的 REST 控制器返回 HTTP 状态 404 – 未找到

Posted

技术标签:

【中文标题】为啥 Spring Boot 中的 REST 控制器返回 HTTP 状态 404 – 未找到【英文标题】:Why REST Controlle in Spring Boot is returning HTTP Status 404 – Not Found为什么 Spring Boot 中的 REST 控制器返回 HTTP 状态 404 – 未找到 【发布时间】:2020-08-15 06:16:42 【问题描述】:

我创建了简单的 Spring Boot 应用程序。我尝试了很多次,但每次在 Pivotal tc 服务器上运行它时都会抛出错误:404 错误。如果有人能帮助我,那就太好了。我已经使用 Spring Boot Starter Class 创建了 Controller 类。在我收到的错误的图像下方。Pivotal Server 已启动并在端口 8082 上运行,但只要我输入 /hello 到 localhost:8082,我就会收到错误 404(我有最后也共享了 Pivotal 服务器的图像)。我几乎尝试了 google 上可用的所有内容。我是 Spring Boot 的初学者,如果有人能提出解决这个问题的建议,我将不胜感激。我还共享了 pom.xml。

404 错误截图-->Error Image.

我正在使用 url:http://localhost:8082/hello 的关键 tc 服务器上运行它

链接到 Pivotal 服务器 url 截图--->Pivotal server with controller return url Image Pivotal 服务器已启动并正在运行,但只要我输入 http://localhost:8082/hello, 我收到 404 错误。任何人都可以帮忙。我已经尝试了所有可以搜索的内容。

链接到 Pivotal 服务器启动并运行屏幕截图-->Pivotal server up and running image

Spring Boot Starter 类的代码:

package io.javabrains.springbootstarter;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication   

public class CourseApiApp 

public static void main(String[] args) 

    SpringApplication.run(CourseApiApp.class,args);

 


控制器类代码:

package io.javabrains.springbootstarter.hello;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class HelloController 

@RequestMapping("/hello")

public String sayHi()

    return("Hello");


Pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema- 
instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven- 
4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.javacheck.springbootquickstart</groupId>
<artifactId>course-api-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>Java Brains Course Api</name>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>

<!-- WEB -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    </dependencies>

      <properties>
    <java.version>1.8</java.version>
</properties>

</project>

【问题讨论】:

您确定服务器在 8082 端口上运行吗? 是的,它在 8082 运行。当我输入 /hello 到 localhost:8082 时,我收到错误 404。我还按名称共享了图像-->“Pivotal 服务器启动并运行图像”。 你检查控制台输出了吗? 查看https://***.com/questions/27211048/using-spring-boot-web-application-with-pivotal-tc-server 你有在localhost:8082/manager 中运行的Tomcat 管理器吗?您是否能够查看您的应用程序是否已部署?您会在服务器启动日志中看到类似的消息,说明应用是否已部署。 【参考方案1】:

使用这个:

@RestController
@RequestMapping("/test")
public class HelloController 

@GetMapping("/hello")
public String sayHi()

    return("Hello");


然后向这个 API /test/hello 发送一个请求

【讨论】:

【参考方案2】:

您可以尝试将字符串包装在响应实体中吗?

@RestController
public class HelloController 

 @RequestMapping("/hello")
 public ResponseEntity<String> sayHi()
 
   return ResponseEntity.ok("Hello");
 

【讨论】:

以上是关于为啥 Spring Boot 中的 REST 控制器返回 HTTP 状态 404 – 未找到的主要内容,如果未能解决你的问题,请参考以下文章

REST 控制器中的 Spring Boot 绑定和验证错误处理

根据 Spring Boot Rest Controller 中的角色,同一控制器返回不同数量的信息

无法使用 Spring Boot 自动配置访问 REST 控制器

为啥我登录后无法进入管理 REST API 请求映射 - Spring Boot

JPA Spring Boot Hibernate Rest API:为啥Hibernate在插入之前会删除?

使用spring-boot对rest服务进行访问控制