簡體   English   中英

使用 Spring 在 java 中為 RESTful API 創建端點的最佳方法

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM