본문 바로가기
Programming/SpringBoot

[Spring Boot] RESTful Service 강의 정리 (20) - JPA를 이용한 새 게시물 추가 POST HTTP Method

by prinha 2020. 8. 27.
반응형

 

 

[Spring Boot] RESTful Service 강의 정리 (19) - 게시물 조회를 위한 Post Entity와 User Entity의 관계 설정

[Spring Boot] RESTful Service 강의 정리 (18) - 게시물 관리를 위한 Post Entity 추가와 초기 데이터 생성 [Spring Boot] RESTful Service 강의 정리 (17) - JPA를 이용한 사용자 추가와 삭제 - POST/DELETE HTT..

prinha.tistory.com


JPA를 이용한 새 게시물 추가 POST HTTP Method

 

 

1) PostRepository interface 생성

package com.example.restfulwebservice.user;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface PostRepository extends JpaRepository<Post,Integer> {

}




2) UserJpaController 메소드 추가

-> 사용자 정보를 검색하여 그 정보의 id값을 post에 지정해줘야함


@Autowired
private PostRepository postRepository;
 
// 게시물 추가
@PostMapping("/users/{id}/posts")
public ResponseEntity<Post> createPost(@PathVariable int id, @RequestBody Post post){

    // 사용자 정보를 검색하여 그 정보의 id값을 post에 지정해줘야함
    Optional<User> user = userRepository.findById(id);

    // Optional<T> findById(ID var1)
    // 리턴값이 Optional인 이유 : 데이터가 존재할수도 안할수도 있기때문에

    if(!user.isPresent()){
        throw  new UserNotFoundException(String.format("ID[%s] not found",id));
    }

    post.setUser(user.get());

    Post savePost =postRepository.save(post);

    // 사용자에게 요청 값을 변환해주기
    // fromCurrentRequest() :현재 요청되어진 request값을 사용한다는 뜻
    // path : 반환 시켜줄 값
    // savedUser.getId() : {id} 가변변수에 새롭게 만들어진 id값 저장
    // toUri() : URI형태로 변환
    URI location = ServletUriComponentsBuilder.fromCurrentRequest()
            .path("/{id}")
            .buildAndExpand(savePost.getId())
            .toUri();

    return ResponseEntity.created(location).build();
}

 

 



 

반응형