feat : add API user registration

This commit is contained in:
kms
2022-09-09 16:17:23 +09:00
parent b757bc66d9
commit f61262efc3
8 changed files with 35 additions and 13 deletions

View File

@@ -19,6 +19,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-jdbc:2.7.3'
implementation 'org.projectlombok:lombok:1.18.24'
annotationProcessor 'org.projectlombok:lombok'
// https://mvnrepository.com/artifact/org.postgresql/postgresql
//implementation group: 'org.postgresql', name: 'postgresql', version: '42.5.0'

View File

@@ -1,7 +1,16 @@
package com.io.realworld.DTO;
import javax.validation.constraints.Email;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import lombok.Builder;
import lombok.Getter;
import org.springframework.web.bind.annotation.ResponseBody;
@Builder
@Getter
@JsonTypeName("user")
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
public class UserResponse {
private String email;

View File

@@ -1,5 +1,7 @@
package com.io.realworld.DTO;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -8,6 +10,8 @@ import javax.validation.constraints.NotBlank;
@Getter
@AllArgsConstructor
@JsonTypeName("user")
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
public class UserSignupRequest {
@NotBlank

View File

@@ -5,21 +5,23 @@ import com.io.realworld.DTO.UserResponse;
import com.io.realworld.repository.User;
import com.io.realworld.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@RestController
@RequestMapping(path = "/api")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/users")
public User signup(@Valid @RequestBody UserSignupRequest userSignupRequest){
return userService.signup(userSignupRequest);
public UserResponse signup(@Valid @RequestBody UserSignupRequest userSignupRequest) {
User user = userService.signup(userSignupRequest);
return UserResponse.builder().username(user.getUsername())
.email(user.getEmail())
.bio(user.getBio())
.image(user.getImage())
.token(user.getToken()).build();
}
}

View File

@@ -1,11 +1,13 @@
package com.io.realworld.repository;
import lombok.Builder;
import lombok.Getter;
import javax.persistence.*;
@Table(name = "users")
@Entity
@Getter
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -16,6 +18,10 @@ public class User {
private String email;
private String password;
private String bio;
private String image;
private String token;
@Builder
public User(String username, String email, String password){
this.username = username;

View File

@@ -2,7 +2,6 @@ package com.io.realworld.repository;
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<User,Long> {
public interface UserRepository extends CrudRepository<User, Long> {
User save(User user);
}

View File

@@ -1,18 +1,18 @@
package com.io.realworld.service;
import com.io.realworld.DTO.UserSignupRequest;
import com.io.realworld.DTO.UserResponse;
import com.io.realworld.repository.User;
import com.io.realworld.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User signup(UserSignupRequest userSignupRequest){
System.out.println(userSignupRequest.getUsername());
public User signup(UserSignupRequest userSignupRequest) {
return userRepository.save(User.of(userSignupRequest.getUsername(),
userSignupRequest.getEmail(),
userSignupRequest.getPassword()));

View File

@@ -1,3 +1,4 @@
server.servlet.contextPath=/api
# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console