SpringBoot本地POST请求404问题排查求助
SpringBoot POST请求返回Nginx 404排查求助
我是SpringBoot新手,跟着教程学习到「测试POST请求」环节(视频对应1:15:00),教程中请求成功返回200,但我操作步骤完全一致、代码也和教程一致,却收到404响应,日志显示来自nginx/1.23.0的404页面。
我用IntelliJ HTTP Client发送的POST请求:
### POST http://localhost:8080/api/v1/student Content-Type: application/json { "name": "Whitney", "email": "wrob@apple.com", "dob": "1987-12-09" }
我的目标是将Student对象存入数据库,以下是相关代码:
相关代码
StudentController类
@RestController @RequestMapping(path = "api/v1/student") public class StudentController { private final StudentService studentService; @Autowired public StudentController(StudentService studentService) { this.studentService = studentService; } @GetMapping public List<Student> getStudents(){ return studentService.getStudents(); } @PostMapping public void registerNewStudent(@RequestBody Student student){ studentService.addNewStudent(student); } }
StudentService类
@Service public class StudentService { private final StudentRepository studentRepository; @Autowired public StudentService(StudentRepository studentRepository) { this.studentRepository = studentRepository; } public List<Student> getStudents() { return studentRepository.findAll(); } public void addNewStudent(Student student) { Optional<Student> studentOptional = studentRepository.findStudentByEmail(student.getEmail()); if (studentOptional.isPresent()){ throw new IllegalStateException(("email taken")); } studentRepository.save(student); } }
StudentConfig类
@Configuration public class StudentConfig { @Bean CommandLineRunner commandLineRunner(StudentRepository repository){ return args -> { Student david = new Student( "David", "drob@apple.com", LocalDate.of(1985, NOVEMBER, 3) ); Student alex = new Student( "Alex", "alex@apple.com", LocalDate.of(1995, JANUARY, 1) ); repository.saveAll(List.of(david, alex)); }; } }
StudentRepository接口
@Repository public interface StudentRepository extends JpaRepository<Student, Long> { @Query("SELECT s FROM Student s WHERE s.email = ?1") Optional<Student> findStudentByEmail(String email); }
Student实体类
@Entity @Table public class Student { @Id @SequenceGenerator( name = "student_sequence", sequenceName = "student_sequence", allocationSize = 1 ) @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "student_sequence" ) private Long id; private String name; private String email; private LocalDate dob; @Transient private Integer age; public Student(Long id, String name, String email, LocalDate dob) { this.id = id; this.name = name; this.email = email; this.dob = dob; } public Student(String name, String email, LocalDate dob) { this.name = name; this.email = email; this.dob = dob; } public Student() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public LocalDate getDob() { return dob; } public void setDob(LocalDate dob) { this.dob = dob; } public Integer getAge() { return Period.between(this.dob, LocalDate.now()).getYears(); } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", email='" + email + '\'' + ", dob=" + dob + ", age=" + age + '}'; } }
项目通过SpringInitializr创建,可提供GitHub仓库链接查看,需要:
- 调试步骤
- 问题根源分析
- 解决方法
内容的提问来源于stack exchange,提问作者David Rob
相关产品推荐
相关产品推荐

