
使用NestJS和Prisma构建REST API:身份验证
大家好,我是凯哥!今天我要和大家分享一个非常实用的主题:如何在 Java 中设计和开发出优秀的 API 接口。作为一名经验丰富的 Java 开发者,我深知一个设计良好的 API 对于系统集成和代码复用的重要性。
API(应用程序编程接口)就像是不同软件系统之间的”翻译官”。想象一下,当你去星巴克点咖啡时,你不需要知道咖啡机的工作原理,只要告诉服务员你要什么咖啡就行了。API 就是这个”服务员”,它帮我们处理了所有复杂的细节。
// 好的设计:简单明了
public interface UserService {
User getUserById(Long id);
List<User> getAllUsers();
void createUser(User user);
}
// 不好的设计:命名不一致,参数混乱
public interface UserService {
User getTheUserWithId(Long userId);
List<User> fetchAllUsersList();
Boolean addNewUserToSystem(User userObj);
}
public class ApiResponse<T> {
private boolean success;
private T data;
private String message;
// 构造器和getter/setter省略
public static <T> ApiResponse<T> success(T data) {
ApiResponse<T> response = new ApiResponse<>();
response.setSuccess(true);
response.setData(data);
return response;
}
public static <T> ApiResponse<T> error(String message) {
ApiResponse<T> response = new ApiResponse<>();
response.setSuccess(false);
response.setMessage(message);
return response;
}
}
@RestController
@RequestMapping("/api/v1/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public ApiResponse<User> getUser(@PathVariable Long id) {
try {
User user = userService.getUserById(id);
return ApiResponse.success(user);
} catch (UserNotFoundException e) {
return ApiResponse.error("用户不存在");
}
}
@PostMapping
public ApiResponse<User> createUser(@RequestBody @Valid User user) {
try {
User createdUser = userService.createUser(user);
return ApiResponse.success(createdUser);
} catch (Exception e) {
return ApiResponse.error("创建用户失败:" + e.getMessage());
}
}
}
创建一个简单的图书管理 API,要求:
// 这是一个基础的示例框架
@RestController
@RequestMapping("/api/v1/books")
public class BookController {
@GetMapping
public ApiResponse<Page<Book>> getBooks(
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
// 实现分页查询
return null; // 你来实现具体逻辑
}
// 添加其他CRUD操作...
}
小伙伴们,今天的 java 学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问凯哥哦。祝大家学习愉快,java 学习节节高!
本文章转载微信公众号@凯伊