일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코드로배우는스프링웹프로젝트
- 구멍가게코딩단
- Kernighan의 C언어 프로그래밍
- 데비안
- 스프링 시큐리티
- 자바편
- 처음 만나는 AI 수학 with Python
- 페이징
- 선형대수
- 자료구조와 함께 배우는 알고리즘 입문
- 네트워크 설정
- network configuration
- resttemplate
- 목록처리
- d
- /etc/network/interfaces
- 자료구조와함께배우는알고리즘입문
- 티스토리 쿠키 삭제
- 스프링부트핵심가이드
- ㅒ
- baeldung
- GIT
- 알파회계
- 코드로배우는스프링부트웹프로젝트
- 이터레이터
- 친절한SQL튜닝
- iterator
- 서버설정
- 리눅스
- 처음 만나는 AI수학 with Python
- Today
- Total
목록Projects/blog (53)
bright jazz music

PostController.java //PostController.java package com.endofma.blog.controller; //... @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(@..

@PageableDafault를 컨트롤러에 달아 페이징 관련 파라미터를 받아서그걸 서비스에 넘긴 뒤에 JpaRepository를 사용해서 데이터를 가져오는 작업을 했다. 그렇지만 나만의 페이징 클래스를 만들어서, 그 안에서 검증을 거치고 서비스로 넘긴 뒤, 리포지토리에 QueryDSL를 하나 만들어 주고, QueryDSL로 페이징 처리를 하는 방법도 좋다. 따라서 여기서는 queryDsl을 사용해서 페이징 처리를 한다. /*build.gradle*/ plugins { id 'java' id 'org.springframework.boot' version '2.7.6' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'com.e..
페이징 처리 @PageableDafault를 컨트롤러에 달아 페이징 관련 파라미터를 받아서그걸 서비스에 넘긴 뒤에 JpaRepository를 사용해서 데이터를 가져오는 작업을 했다. ---------- //PostController.java package com.endofma.blog.controller; import com.endofma.blog.domain.Post; import com.endofma.blog.request.PostCreate; import com.endofma.blog.response.PostResponse; import com.endofma.blog.service.PostService; import lombok.RequiredArgsConstructor; import lombok...

//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 = postService...

요청 클래스와 응답 클래스를 나눠야 할 일이 생겼다. 클라이언트로부터 요청이 있었기 때문이다. 요청: 타이틀을 10자로 끊어서 보내주세요. 이 요청은 사실 클라이언트 측에서 처리하는 것이 적합한 듯하다. 어쨌든 서버단에서 처리해 보기로 한다. 실제로는 PostResponse 클래스 먼저 작성하였지만 보기 쉽도록 아래와 같은 순서로 배치하였다. PostController => PostService => PostResponse => PostControllerTest => 결과 --- 가장 중요한 PostResponse 클래스부터 먼저 보자. 나중에 똑같은 내용으로 다시 등장하기는 한다. 1. PostResponse 클래스 생성 클라이언트의 요청에 부합하는 응답을 보내기 위해 생성한 클래스이다. //PostR..
1. PostController에 get 메소드 추가 //PostController.java package com.endofma.blog.controller; import com.endofma.blog.domain.Post; import com.endofma.blog.request.PostCreate; import com.endofma.blog.service.PostService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import ..
1. PostsController와 연관된 코드 개선(test클래스, dto 등) ObjectMapper 사용 테스트 케이스의 코드 수정 (jackson을 사용하여 가독성 up) 뿐만 아니라 필드가 늘어남에 따라 값을 수정해야 할 때 실수 발생확률을 낮춘다. * PostCreate에 생성자, 게터가 있어야 한다. //PostController.java package com.endofma.blog.controller; import com.endofma.blog.request.PostCreate; import com.endofma.blog.service.PostService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; i..

포스트 저장을 위한 클래스 생성과 설정 service 패키지 생성: PostService.java 생성 repository 패키지 생성: PostRepository.java 인터페이스 생성( JPARepository 인터페이스 구현(여기서는 extends). JPARepository 인터페이스의 제네릭 파라미터로는 Post 엔티티와 Long형식의 PK 전달) domain 패키지 생성: Post 클래스 생성(@Entity 애노테이션 부착) 기본적인 흐름 Json 데이터 ==> PostController(PostCreate 타입으로 바인딩) ==> PostService(일반 클래스인 PostCreate타입을 엔티티로 변환) ==> PostRepository 호출해서 save //PostController.j..

요약: 테스트 코드 ==> PostController ==> 바인딩 에러 발생 ==> ExceptionController ==> 에러를 꺼내서 ErrorResponse 객체에 바인딩하여 json형식으로 클라이언트에게 반환. 예상된 값(여기서는 코드 또는 메시지가 반환되지 않으면 에러가 발생하는 문제가 있음) --- test2() 실행하여 json형식으로 PostController에 request //PostControllerTest.java package com.endofma.blog.controller; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.fa..
이전 포스팅처럼 에러를 처리한다면 아래와 같은 문제가 있다. /* * 1. 매번 메서드마다 검증해야함. 귀찮음. 실수 가능성+ * 2. 응답값을 HashMap으로 하지 말고 응답 클래스로 만든 것이 좋다. * 3. 여러 개의 에러처리가 힘들다. 여러 개의 응답을 보내줘야 한다면 에러마다 만들어줘야 한다... * 4. 반복작업을 피할 것 * * @ControllerAdvice를 사용하여 이런 문제를 개선해 보자 * : 클래스에 이 어노테이션을 달면 개별 컨트롤러가 아니라 모든 컨트롤러에 대한 에러를 캐치한다. */ ---------------------------------------------------------------- 전역적인 에러를 처리할 임의의 컨트롤러 생성(여기서는 ExceptionCont..