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);

}

2. 清晰的錯誤處理

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;

}

}

3. REST API 示例

@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());

}

}

}

實用小貼士

  1. 版本控制:為 API 添加版本號,方便后續升級
  2. 文檔化:使用 Swagger 或 Spring Doc 自動生成 API 文檔
  3. 安全性:實現適當的認證和授權機制
  4. 性能優化:使用緩存和分頁技術

常見錯誤和解決方案

  1. 接口過度設計:保持簡單,只暴露必要的功能
  2. 錯誤處理不當:統一錯誤響應格式
  3. 缺乏安全考慮:添加適當的驗證和授權
  4. 文檔缺失:及時更新 API 文檔

動手練習

創建一個簡單的圖書管理 API,要求:

  1. 實現基本的 CRUD 操作
  2. 添加錯誤處理
  3. 實現分頁查詢
  4. 添加接口文檔
// 這是一個基礎的示例框架

@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 學習節節高!

本文章轉載微信公眾號@凱伊

上一篇:

Windows遠端線程執行任意API的設計與實現

下一篇:

B站微服務API管理
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費