当前位置: 首页 > 知识库问答 >
问题:

如何修复“HTTP-404”错误,在使用Spring启动的REST Web服务中的GET请求期间

燕博文
2023-03-14

我的示例spring boot REST web服务给出了404错误,我不确定出了什么问题

package com.in28minutes.springboot.studentservices;
@SpringBootApplication
public class StudentServicesApplication {

public static void main(String[] args) {
    SpringApplication.run(StudentServicesApplication.class, args);
}

}

package com.in28minutes.springboot.controller;
@RestController
public class StudentController {

@Autowired
private StudentService studentService;

@GetMapping("/students/{studentId}/courses")
public List<Course> retrieveCoursesForStudent(@PathVariable String 
    studentId) {
    return studentService.retrieveCourses(studentId);
}

@GetMapping("/students/{studentId}/courses/{courseId}")
public Course retrieveDetailsForCourse(@PathVariable String studentId,
        @PathVariable String courseId) {
    return studentService.retrieveCourse(studentId, courseId);
}

}

我的请求来自邮递员Rest请求发件人:http://localhost:8080/students/stu1/courses/course1

pom。xml

<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.in28minutes.springboot</groupId>
 <artifactId>student-services</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>student-services</name>
 <description>Demo project for Spring Boot</description>

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

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
 </dependencies>

 <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
   </build>

</project>

回应:

{"时间戳":"2018-12-28T02:48:00.185 0000"、"状态":404、"错误":"未找到"、"消息":"无可用消息"、"路径":"/学生/stu1/课程/课程1"}

共有2个答案

高运诚
2023-03-14

问题已解决,@组件需要添加到服务类,以及主应用程序类中的@ComponentScan:

package com.in28minutes.springboot.service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.springframework.stereotype.Component;

import com.in28minutes.springboot.model.Course;
import com.in28minutes.springboot.model.Student;

@Component
public class StudentService {

public List<Course> retrieveCourses(String studentId) {
    Map<String, Course> courses = Student.getStudentObj(studentId).getCourses();
    List<Course> courseList = 
    courses.values().parallelStream().collect(Collectors.toList());
    return courseList;
 }

 public Course retrieveCourse(String studentId, String courseId) {
    return Student.getStudentObj(studentId).getCourses().get(courseId);
 }

}

package com.in28minutes.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication 
@ComponentScan("com.in28minutes.springboot")
public class StudentServicesApplication {

public static void main(String[] args) {
    SpringApplication.run(StudentServicesApplication.class, args);
    }

}
柯瀚海
2023-03-14

假设,您在不同的包com.in28minutes.springboot.controller中有Controller类;和Spring boot main类在不同的包com.in28minutes.springboot.studentservices;

@Spring Boot应用程序

默认情况下,SpringBootApplication只能从声明此注释的类的包中进行扫描。

这是一个方便的注释,相当于声明@Configuration、@EnableAutoConfiguration和@ComponentScan。

如果未定义特定的包,则将从声明此注释的类的包中进行扫描。

使用组件扫描扫描控制器包

@ComponentScan(basePackages = {"com.in28minutes.springboot.controller"})
 @SpringBootApplication
 public class StudentServicesApplication {

 public static void main(String[] args) {
 SpringApplication.run(StudentServicesApplication.class, args);
     }
  }

更多信息:参考

 类似资料:
  • Python 的标准库 urllib 提供了大部分 HTTP 功能,但使用起来较繁琐。通常,我们会使用另外一个优秀的第三方库:Requests,它的标语是:Requests: HTTP for Humans。 Requests 提供了很多功能特性,几乎涵盖了当今 Web 服务的需求,比如: 浏览器式的 SSL 验证 身份认证 Keep-Alive & 连接池 带持久 Cookie 的会话 流下载

  • 我试图用Spring启动制作一个“你好世界”控制器,但GET请求不起作用。我能做些什么来修复这个问题? 我在https://start.spring.io/在我选择的依赖项中 我尝试使用不同的注释,如@GetMap 我希望输出为“Hello World”,但实际输出为“Whitelabel Error Page”

  • 我正在使用改进后的Spring Boot服务请求,但总是被称为失败回调方法。这是我的简化代码: Spring Boot服务(管理员): 我的客户端界面: 异步 POST 请求: 这是我的用户类(POJO): 注意:我在Android开发,当从邮递员手动发送请求时,我得到200 OK。此外,我在logcat中得到消息:400错误请求

  • web.xml pom.xml homeController.java } home.jsp

  • 我在Delphi XE5中使用IdHTTP和IdSSLIOHandlerSocketOpenSSL处理程序。我有我的客户端ID,客户端机密和API密钥。我有授权码。 IdHTTP配置为: 其他的都是默认的。 我将Accept标头更改为在其他地方找到的设置。 我将添加到content-type。 我替换了和。 这是IdHTTP发送的内容: client_id=clientid&client_secr

  • 我将此查询编写为否定查询并向数据库询问选择语句,但我没有收到列表中的数据 发生了以下错误 org.springframework.core.convert.ConverterNotFoundException:找不到能够从类型[org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBac