繁体   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