java - 在 Spring Boot 的 RestController 中找不到 404
问题描述
我有一个像这样的 pom.xml 的 Spring Boot 项目
<groupId>com.project</groupId>
<artifactId>prj</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>prj</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<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-data-jpa</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>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Application类是这样的
@SpringBootApplication
public class PrjApplication {
public static void main(String[] args) {
SpringApplication.run(HqApplication.class, args);
}
}
我有一个 RestController ,我正在尝试做一些像这样的 CRUD 操作
@RestController("/register")
public class RegisterController {
@Autowired
private UserRepository userRepository;
@GetMapping("/user/{id}")
public User getUser(@Valid @RequestBody Long id){
User user = userRepository.getOne(id);
return user;
}
@PostMapping("/new")
public User saveUser(@Valid @RequestBody String name,@Valid @RequestBody String email,@Valid @RequestBody String password,@Valid @RequestBody String phone){
System.out.println("savginv user");
User user = new User();
user.setEmail(email);
user.setPassword(password);
user.setName(name);
user.setPhone(phone);
userRepository.save(user);
return user;
}
}
我做了一个实体类;像这样的用户
@Entity
@Table(name = "tbl_users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name, email, password, phone;
public Long getId() {
return 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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
当我尝试通过使用 PostMan 调用 post 方法来保存用户时,它给了我 404 not found 错误。
{
"timestamp": "2018-06-23T06:47:14.086+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/prj/register/new"
}
我正在使用 JPARepository 来执行数据库操作。
解决方案
/prj
不是您的控制器的一部分。要么使用POST
没有它的请求(即/register/new
),要么将其添加到控制器的映射中:
@RestController("/prj/register")
public class RegisterController {
// rest of the code (no pun intended)
推荐阅读
- node.js - 获取请求期间未找到 Feathers 服务
- ionic-framework - Ionic App 中的 Typeform 导致 zone.js 失败
- sql - 查询完成后从 HIVE 发送电子邮件?
- indexing - AMPL:定义对集合的特定索引的约束
- javascript - 如何在jquery中提交带有表单的图像,其中图像标签在jquery代码中?
- javascript - 按升序对 AJAX 响应结果进行排序
- ios - CoreData 可转换:自定义转换器永远不会被调用 - 使用 NSKeyedArchiver
- vue.js - Vuejs根据商店数据在发布后有条件地重定向
- angular - NgRx:如何在 meta-reducers 中使用服务?
- java - 为什么我在 Netbeans 中没有 Web 应用程序选项?