영원히 흘러가는 강

3장 오류 잡아보기 본문

스프링 부트와 aws로 혼자 구현하는 웹 서비스

3장 오류 잡아보기

double_R_one_G 2020. 9. 28. 15:56
728x90

thewayaboutme.tistory.com/165

 

스프링부트 책 3단원: spring data JPA 다뤄보기

* 본문은 <스프링부트와 aws로 혼자 구현하는 웹서비스>(2019, 이동욱, 프리렉)을 공부하고 정리한 내용입니다. 코드에서 import 부분은 모두 생략했습니다. - import static ~ : 임포트의 스태틱은 무슨 ��

thewayaboutme.tistory.com

 

근 1주일을 오류 잡는데 시간을 사용했지만 잘 정리된 글이 있어서 오류를 해결했다....

나름 괜찮은 삽질인듯하다.

어떤게 문제인지를 파악했고 왜 안되는지에 대해 이해 위의 글을 읽고 해결

 

105p.

 @PutMapping("/api/v1/posts")
 
 //@PutMapping->@PostMapping 으로 변경
 
 @PostMapping("/api/v1/posts")

 

3장에서 posts를 진행중 책에서는

 

PostsResponseDto,PostsUpdateRequestDto 클래스를 생성해 주지 않기에 생성

 

PostsService에는 update 기능도 추가해줘야한다

 

경로  main/../service/PostsService.java 

@RequiredArgsConstructor
@Service
public class PostsService {
    private final PostsRepository postsRepository;

    @Transactional
    public Long save(PostsSaveRequestDto requestDto) {
        return postsRepository.save(requestDto.toEntity()).getId();
    }

    @Transactional
    public Long update(Long id, PostsUpdateRequestDto requestDto) {
        Posts posts = postsRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("해당 게시글이 없습니다. id=" + id));
        posts.update(requestDto.getTitle(), requestDto.getContent());
        return id;
    }

    public PostsResponseDto findById (Long id) {
        Posts entity = postsRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("해당 게시글이 없습니다. id=" + id));
        return new PostsResponseDto(entity);
    }
}

 

 

main/../web/dto

 

PostsResponseDto 생성

@Getter
public class PostsResponseDto {
    private Long id;
    private String title;
    private String content;
    private String author;

    public PostsResponseDto(Posts entity) {
        this.id = entity.getId();
        this.title = entity.getTitle();
        this.content = entity.getContent();
        this.author = entity.getAuthor();
    }
}

 

PostsUpdateRequestDto 생성

 

@Getter
@NoArgsConstructor
public class PostsUpdateRequestDto {
    private String title;
    private String content;

    @Builder
    public PostsUpdateRequestDto(String title, String content) {
        this.title = title;
        this.content = content;
    }
}

 

728x90
Comments