[英]Best approach to creating endpoints for a RESTful API in java using Spring
我是该领域的新手,尝试使用 Spring 和 Maven 依赖项(例如 Project Lombok)创建 API,以便更多地了解我的学习。
所以我设法编写了一些代码来启动应用程序,现在我正在创建一些端点。 其中第一个是我兄弟帮助我完成的“列表用户”类型的事情,它分为 3 个类别,我将在下面列出:
(1) 用户列表响应.java:
package com.tropicalia.meu_cardapio.api.user.list;
import lombok.Data;
@Data
public class UserListResponse {
private Long id;
private String name;
private String email;
}
(2) UserListRest.java
package com.tropicalia.meu_cardapio.api.user.list;
import com.tropicalia.meu_cardapio.domain.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserListRest {
@Autowired
UserListService service;
@GetMapping
public ResponseEntity<List<User>> list() {
return ResponseEntity.ok().body(service.listUsers());
}
}
(3) 用户列表服务.java
package com.tropicalia.meu_cardapio.api.user.list;
import com.tropicalia.meu_cardapio.domain.user.User;
import com.tropicalia.meu_cardapio.domain.user.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserListService {
@Autowired
UserRepository repository;
public List<User> listUsers() {
List<User> list = repository.findAll();
return list;
}
}
我写这篇文章的原因是我不知道如何创建其他端点,例如“创建用户”,我什至不知道从哪里开始我的研究,如果有人能帮助我,我将不胜感激这里有一些指导。
我使用的一种方法是将 controller 分组到所谓的资源中,例如:
然后您可以创建一个 controller,称为UserController
,在 controller 级别上进行映射,并在方法级别上创建一些特定映射,例如:
@RestController
@RequestMapping("/users")
public class UserController{
@GetMapping
public ResponseEntity<List<UserDto>> getUsers(){}
@GetMapping("/{id}")
public ResponseEntity<UserDto> getOneUser(@PathVariable Long id){}
@PostMapping
public ResponseEntity<UserDto> addUser(@RequestBody UserDto user){}
@PutMapping("/{id}")
public ResponseEntity<UserDto> updateUser(@PathVariable Long id, @RequestBody UserDto user){}
}
然后,您可以使用带有 spring 数据 JPA 的服务/存储库层来读取/保存您的数据。 好的起点是 spring 指南,例如:
首先,最好只定义更多通用端点而不是UserList,通常最好只定义用户端点并在那里添加所有方法和路由,如listUsers或getUser,addUser ...
此外,当您使用@Repository 时,它会生成基本方法来“获取添加删除或更新”您的 object。
例如,您可以在 Service 中定义
public User saveUser(User user) {
if (user != null) {
return repository.save(user);
} else {
return null;
}
}
在您的 Controller 中:
@PostMapping("/addUser")
public User addUser(@Valid @RequestBody User user) {
user newUser = service.saveUser(user);
return newUser;
}
如果您有更多疑问,请告诉我。 :D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.