[英]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.