일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 데비안
- 코드로배우는스프링부트웹프로젝트
- 자바편
- GIT
- Kernighan의 C언어 프로그래밍
- 구멍가게코딩단
- d
- 목록처리
- ㅒ
- 티스토리 쿠키 삭제
- 처음 만나는 AI수학 with Python
- 서버설정
- 리눅스
- resttemplate
- /etc/network/interfaces
- 선형대수
- 자료구조와함께배우는알고리즘입문
- network configuration
- 이터레이터
- 알파회계
- 스프링 시큐리티
- 네트워크 설정
- 자료구조와 함께 배우는 알고리즘 입문
- 처음 만나는 AI 수학 with Python
- baeldung
- 스프링부트핵심가이드
- 페이징
- 친절한SQL튜닝
- 코드로배우는스프링웹프로젝트
- iterator
- Today
- Total
목록Projects/blog (53)
bright jazz music

지금까지 만든 것은 글 조회와 등록의 구분이 되지 않았음. 따라서 정리 필요. 글 조회는 post-inquiry로 변경, 글 등록은 post-create로 변경 //PostControllerDocTest.java package com.endofma.blog.controller; import com.endofma.blog.domain.Post; import com.endofma.blog.repository.PostRepository; import com.endofma.blog.request.PostCreate; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; import org.junit...

8080 포트 바꿔주기. 여러 가지 방법이 있지만 어노테이션 부착이 가장 쉽다.. @AutoConfigureRestDocs(uriScheme = "https", uriHost = "api.blog.com", uriPort = 443) 클래스 선언부 위에 달아준다. @AutoConfigureRestDocs도 달아주었다. @BeforeEach를 포함한 관련 초기 설정 관련 코드들을 주석처리해 주었다. //PostControllerDocTest.java package com.endofma.blog.controller; import com.endofma.blog.domain.Post; import com.endofma.blog.repository.PostRepository; import org.junit.jup..

API를 설명하기 위한 문서 작성 라이브러리는 스웨거를 포함하여 다수이다. 여기서는 Spring REST docs를 사용한다. https://spring.io/projects/spring-restdocs Spring REST Docs It helps you to produce documentation that is accurate, concise, and well-structured. This documentation then allows your users to get the information they need with a minimum of fuss. spring.io Spring REST Doc의 장점 운영 코드에 영향이 없다. 다른 라이브러리는 운영 중인 코드에 어노테이션 또는 xml을 사용해..
현재 예외에 대한 응답은 아래와 같이 반환되고 있다. MockHttpServletResponse: Status = 400 Error message = null Headers = [Content-Type:"application/json"] Content type = application/json Body = {"code":"400","message":"잘못된 요청입니다.","validation":{}} Forwarded URL = null Redirected URL = null Cookies = [] 요청의 성공과 실패 여부만 나타낼 뿐, 검증에 관한 이유를 밝히고 있지는 않다. 지금까지 우리가 작성한 코드 중에서는 validation에 값을 넣어 준 적이 없기 때문이다. 따라서 이번에는 validatio..
그런데 원래대로라면 InvalidRequest를 ExceptionController에 추가해 줘야한다.그러나 애플리케이션이 커지면서 예외도 늘어나게 된다. 따라서 다른 방법을 사용해 본다. 자바에서 기본 제공해주는 예외들은 기존처럼 따로 만들어준다. 그리고 자바에서 제공되지는 않지만 애플리케이션 운영에서 발생하는 공통적으로 처리해야 하는 예외들은 하나의 클래스를 만들어 대응한다. 프로그램 전체에서 사용할 Exception클래스를 하나 만들어서 그것으로 하여금 에러들을 처리하게 하는 것이다. 여기서는 그 BlogException이라는 추상 클래스를 생성하여 그것으로 하여금 모든 에러를 처리하게 할 것이다. 앞선 예제들에서는 각각의 에러 클래스들이 RuntimeException 클래스를 상속하였다. 이제부터..

예외처리 1에서는 정상적이지 않은 입력값이 들어갔을 경우의 예외처리를 구성하였다. 이번에는 PostController에서 발생할 수 있는 오류에 대한 예외처리를 만들고 테스트한다. 우선 단건 조회부터. //PostService.java //... //단건 조회 public PostResponse get(Long id) { Post post = postRepository.findById(id) // .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 글입니다.")); //있으면 post반환 없으면 에러 반환 // .orElseThrow(() -> new PostNotFound()); .orElseThrow(PostNotFound::new); //위와 같은 ..
자바에서 기본 제공하는 예외 말고 좀 더 명확하게 의미를 전달하는 고유의 예외 클래스를 만들어서 사용한다. 컨트롤러는 바뀐 것이 없다. PostService.java에서 수정한다. //PostController.java ///... @Slf4j @RestController @RequiredArgsConstructor public class PostController { private final PostService postService; @PostMapping("/posts") public void post(@RequestBody @Valid PostCreate request) { postService.write(request); // return Map.of(); } //단건 조회 @GetMapping..
//PostController.java //... @Slf4j @RestController @RequiredArgsConstructor public class PostController { private final PostService postService; @PostMapping("/posts") public void post(@RequestBody @Valid PostCreate request) { postService.write(request); // return Map.of(); } //단건 조회 @GetMapping("/posts/{postId}") public PostResponse get(@PathVariable Long postId){ PostResponse response = postSe..
//PostService.java //PostEdit에서 검증하지 않는다면 아래와 같은 로직이 들어가야 한다. @Transactional public void edit(Long id, PostEdit postEdit){ Post post = postRepository.findById(id).orElseThrow(PostNotFound::new); post.edit( postEdit.getTitle() != null ? postEdit.getTitle() : post.getTitle(); postEdit.getContent() != null ? postEdit.getContent() : post.getContent()); } 이게 귀찮아서 PostEditor를 만들어 준 것이다. 2. PostService..

어차피 수정할 필드가 같으므로 Post.java를 사용할 수 있다. 그러나 다른 기능별로 나눠 주는 것이 좋다. 게시글을 수정하기 위해 사용할 클래스를 만들어준다. //PostEdit.java package com.endofma.blog.request; import lombok.Builder; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotBlank; @Getter @Builder public class PostEdit { @NotBlank(message = "타이틀을 입력하세요.") private String title; @NotBlank(message = "콘텐츠를 입력해 주세요.") private ..