인증 · 보안 기능 없는 회원가입 api
내 자력으로 코드를 작성했기보다는 chatGPT - Comma... 도움을 많이 받았기에 많이 아쉽다. 다음 회원가입 api구현에는 도움을 받지 않고 작성할만큼 성장하고 싶다.
프로젝트 전체 구조
src
└── main
└── java
└── com
└── example
└── Backend
└── Study
├── BackendStudyApplication.java
├── controller
│ └── UserController.java
├── dto
│ └── UserDto.java
├── entity
│ └── User.java
├── repository
│ └── UserRepository.java
└── service
└── UserService.java
Controller
UserController.java
- 사용자 등록과 관련된 REST API 엔드포인트를 정의
// src/main/java/com/example/Backend/Study/controller/UserController.java
package com.example.Backend.Study.controller;
import com.example.Backend.Study.dto.UserDto;
import com.example.Backend.Study.entity.User;
import com.example.Backend.Study.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/register")
public ResponseEntity<User> registerUser(@RequestBody UserDto userDto) {
User user = userService.registerUser(userDto);
return new ResponseEntity<>(user, HttpStatus.CREATED);
}
}
Service
UserService.java
- 비즈니스 로직 처리하는 서비스 계층
// src/main/java/com/example/Backend/Study/service/UserService.java
package com.example.Backend.Study.service;
import com.example.Backend.Study.dto.UserDto;
import com.example.Backend.Study.entity.User;
import com.example.Backend.Study.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User registerUser(UserDto userDto) {
User user = new User();
user.setUsername(userDto.getUsername());
user.setPassword(userDto.getPassword());
return userRepository.save(user);
}
}
Dto
UserDto.java
- 데이터 전송 객체(DTO)
- 사용자 등록 시 사용
// src/main/java/com/example/Backend/Study/dto/UserDto.java
package com.example.Backend.Study.dto;
public class UserDto {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
entity
User.java
- JPA Entity로 데이터베이스의 사용자 테이블과 매핑
// src/main/java/com/example/Backend/Study/entity/User.java
package com.example.Backend.Study.entity;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
// Getter and Setter methods
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
repository
UserRepository.java
- 사용자 엔티티와 데이터베이스 상호작용 담당하는 JPA 리포지토리
// src/main/java/com/example/Backend/Study/repository/UserRepository.java
package com.example.Backend.Study.repository;
import com.example.Backend.Study.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
'익숙해지기 위한 노력들' 카테고리의 다른 글
[Flask] 설치와 웹페이지 실행 (0) | 2024.10.25 |
---|---|
[Wireshark] 네트워크 패킷 분석 (2) | 2024.10.18 |
[IntelliJ] 인텔리제이 단축어 설정 sout 오류 (1) | 2024.05.07 |
[Linux] vi에디터 커서 이동키 정리 (0) | 2023.04.06 |