使用Spring为java中的RESTful API创建端点的最佳方法。

问题描述 投票:0回答:1

我是这个领域的新手,想用Spring和Maven的依赖关系(如Project Lombok)来创建一个API,只是为了让我的学习更上手。

所以我已经设法写了一些代码来启动应用程序,现在我正在创建一些端点。其中第一个是我哥哥帮我做的 "列表用户 "类型的东西,它分为3个类,我将在下面列出。

(1)UserListResponse.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) UserListService.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;
    }
}

我写这个帖子的原因是,我不知道如何创建其他的端点,比如 "创建用户",我甚至不知道从哪里开始研究,如果有人能在这里帮我指点一下,我将非常感激。

java spring api lombok endpoint
1个回答
1
投票

我使用的方法之一是把控制器分成所谓的资源,比如。

  • 用户资源
  • 图书资源等

然后你可以创建一个控制器,叫做 UserController 与控制器层的映射,以及方法层的一些特定映射,如。

@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){}

}

然后你就可以使用servicerepository层与spring data JPA来读取persist你的数据。好的出发点是spring指南,比如。


0
投票

首先,也许最好是定义更多的通用端点,而不是UserList,通常最好是定义User端点,并在那里添加所有的方法和路由,如listUser或getUser,addUser...。

此外,当你使用@Repository时,它会生成基本方法来 "获取、添加、删除或更新 "你的对象。

例如,你可以在你的服务中定义

public User saveUser(User user) {
    if (user != null) {
        return repository.save(user);
    } else {
        return null;
    }
}

而在你的控制器中。

@PostMapping("/addUser")
public User addUser(@Valid @RequestBody User user) {

    user newUser = service.saveUser(user);

    return newUser;
}

如果你有更多的疑问,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.