새 포스트 생성

jb kim·2022년 3월 2일
0

REST API 블로그 앱

목록 보기
16/65

1.인터페이스 PostService (service 패키지)

public interface PostService {
	//클라이언트에서 보낸 PostDto를 입력해서 새 포스트 생성(리턴값으로 생성된 postDto)
	PostDto createPost(PostDto postDto);		
}

2.PostService 구현 클래스 PostServiceImpl

@Service
public class PostServiceImpl implements PostService {

	private PostRepository postRepository;
	
	// 단일 생성자인 경우는 추가적인 autowired 어노테이션이 필요 없다.
	public PostServiceImpl(PostRepository postRepository) {
		this.postRepository = postRepository;
	}
	
	@Override
	public PostDto createPost(PostDto postDto) {
		
		// PostDto => Post 변환
		Post post = new Post();
		post.setTitle(?);
		post.setContent(?);
		post.setDescription(?);
		// DB에 새 포스트 저장 (리턴 Post)
		Post newPost = postRepository.save(post);
		
		// Post => PostDto 변환
		PostDto postResponse = new PostDto();
		postResponse.setId(?);
		postResponse.setTitle(?);
		postResponse.setContent(?);
		postResponse.setDescription(?);
		
		return postResponse;
	}

}

3. PostController

@RestController
@RequestMapping("/api/posts")
public class PostController {

	private PostService postService;
	
	public PostController(PostService postService) {
		this.postService = postService;
	}
	
	@PostMapping
	public ResponseEntity<PostDto> createPost(@RequestBody PostDto postDto) {
		PostDto postResponse = postService.createPost(postDto);
		return new ResponseEntity<>(postResponse, HttpStatus.CREATED);
	}
	
}

참고
https://madplay.github.io/post/why-constructor-injection-is-better-than-field-injection
https://cheershennah.tistory.com/179

profile
픽서

1개의 댓글

comment-user-thumbnail
2023년 5월 17일

픽서님 안녕하세요?
Rest Api 따라서 만들고 있습니다.

그런데 해당 게시글의 PostServiceImpl에서 "?"는 어떤 의미인지 여쭤봐도 될까요?

답글 달기