PostMan

김창모·2023년 5월 29일
0

SpringBoot

목록 보기
10/19
post-thumbnail

PostMan 이란?

API 개발을 보다 빠르고 쉽게 구현할수 있도록 도와준다.
개발된 API 를 테스트하여 문서화 또는 공유 할수 있도록 해주는 플랫폼

수정된 Controller , Service

Controller

package com.hello.hello.controller;

import com.hello.hello.domain.dto.SignUpDto;
import com.hello.hello.service.MemberService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
public class MemberController {
    private final MemberService memberService;
	
    @GetMapping("/member")
    public Long save(@RequestBody SignUpDto signUpDto) {
        return memberService.saveMember(signUpDto);
    }
}

"/member" URL 로 Get 요청한 Request 에서 Json 을 받아 SignUpDto 클래스이 필드값과 일치하면 signUpDto 에 매핑해준다.
리턴값은 어노테이션을 활용한 생성자 주입 방식의 빈으로 등록된 MemberService 클래스의 memberService 의 saveMember() 메서드에 signUpDto 값을 넘겨준다.

Service

package com.hello.hello.service;

import com.hello.hello.domain.dto.SignUpDto;
import com.hello.hello.domain.entity.Member;
import com.hello.hello.repository.MemberJpaRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class MemberService {
    private final MemberJpaRepository memberJpaRepository;

    public Long saveMember(SignUpDto signUpDto) {
        Member member = Member.builder().email(signUpDto.getEmail()).name(signUpDto.getName())
                .password(signUpDto.getPassword()).build();

        memberJpaRepository.save(member);

        return member.getId();
    }
}

SignUpDto 타입의 signUpDto 를 전달받은 MemberService 에선 이 값을 사용하여
Member Entity 를 생성한다. ( Member Entity 에 @Builder 어노테이션을 사용하여 Builder 패턴을 사용 )
memberJpaRepository 는 JpaRepository<Entity,PK Type> 을 상속받은 인터페이스이고 JpaRepository 의 모든 메서드 들을 사용할수 있다.
Entity 를 저장하기 위해 save 메서드를 사용하였고 member Entity 의 Id 값을 반환해주었다.

PostMan 으로 확인

Get 방식으로 localhost:8080/member 에 요청을 보냈다.
Body 에는 Email , name , password 를 json 타입으로 전송해주었더니 리턴값으로 1 이 왔다.

현재 우리는 H2 DB 를 사용하고 있다.
H2 DB 설정과 기타 설정에 대해선 후에 따로 정리하도록 하겠다.
H2 DB 에 접속하여 모든 Member Table 을 조회하는 쿼리를 보냈더니
우리가 Body 에 담아 전송했던 Email , Name , Password 값으로 만들어진 Member Entity 의 값이
잘 들어가있으며 IDENTITY 전략으로 DB 에서 Auto_Increment 로 생성하게 만든 PK ID 값도 잘 들어갔다.

하지만 위의 사진에서 알수 있듯 유저의 비밀번호 정보가 그대로 노출되어있다.
많은 사용자들이 여러 사이트에 같은 아이디와 비밀번호를 사용한다. 이 정보가 유출되었을 경우 사용자가 많은 피해를 입을수 있기 때문에 또 여러 보안상의 이유로 PasswordEncoder 를 사용하여 변경해주어야한다.

또 현재 Get 방식으로 설명 하였지만 데이터를 생성하는 경우 POST 방식이 옳다.
이에 대한것 또한 후에 따로 정리할 예정이다.
우선 Member 를 저장하는 메서드는 @PostMapping 으로 변경 해주도록 하자.

0개의 댓글