프로젝트명 : jinyoung_rest기본 구성JAVA : 11SPRINGBOOT VERSION : 2.4.1DB : H2 , POSTGRESQL (둘다 작동 가능하도록 설정 하자)ORM : MYBATIS , JPA 다 가능 하도록 설정 REST API 구현 기술 요소
json to dto 자동 생성 참조링크 ObjectMapper objectMapper; //객체를 json string으로 변환validation 설정응답 객체 생성 예제 링크EventValidator : 입력값 검증 후 error 정보를 Erros객체에
라이브러리 추가주요 클래스 ● 왜 @EqualsAndHasCode에서 of를 사용하는가● 왜 @Builder를 사용할 때 @AllArgsConstructor가 필요한가● @Data를 쓰지 않는 이유● 애노테이션 줄일 수 없나\-> Entity 어노테이션 선언 시 아래와
desirialization : json -> 객체로 변환serialization : 객체 -> json으로 변환입력값으로 객체보다 추가적인 데이터까지 같이 주면?○ Bad_Request로 응답 vs 받기로 한 값 이외는 무시아래 옵션을 사용 할 지는 좀 더 생각 해
map으로 받으면 입력값 검증 처리가 힘들다. 대신 어떤 input값이라도 다 받는다..... dto를 사용하면 입력값 검증 방법이 좀 더 다양하고 깔끔하다..... 대신 객체 설계가 힘들 수도 있다.... 어떻게 처리해야 할지... 고민해 보자....
javaBean spec에 만족 해야지만 : serialization , deserialization 모두 가능 하다. <<<< 중요ObjectMapper : 객체를 json으로 변환@JsonComponent : ObjectMapper에 @Json
hateous는 시간 날 때 공부하자....일단, 잘 안쓰는 듯 한데...
API 문서 만들기○ 요청 본문 문서화○ 응답 본문 문서화○ 요청 헤더 문서화○ 요청 필드 문서화○ 응답 헤더 문서화○ 응답 필드 문서화○ 링크 문서화■ self■ query-events■ update-event■ profile 링크 추가
Pageable : page,size,sort등 paging에 관련된 정보를 담고 있다.PagedResourcesAssembler : 페이지 링크 정보를 생성 해 준다.응답값응답값test
Account 도메인 추가OAuth2로 인증을 하려면 일단 Account 부터● id● email● password● roels@ElementCollection:\-RDB에는 컬렉션과 같은 형태의 데이터를 컬럼에 저장할 수 없기 때문에, 별도의 테이블을 생성하여 컬렉션
스프링 시큐리티● 웹 시큐리티 (Filter 기반 시큐리티) : 웹 요청에 보안 설정● 메소드 시큐리티 : 메소드에 보안 설정● 이 둘 다 Security Interceptor를 사용합니다.○ 리소스에 접근을 허용할 것이냐 말것이냐를 결정하는 로직이 들어있음테스트 다
@Test(expected)예외 타입만 확인 가능try-catch예외 타입과 메시지 확인 가능.하지만 코드가 다소 복잡.@Rule ExpectedException코드는 간결하면서 예외 타입과 메시지 모두 확인 가능
스프링 시큐리티 기본 설정시큐리티 필터를 적용하지 않음...● /docs/index.html로그인 없이 접근 가능● GET /api/events● GET /api/events/{id}로그인 해야 접근 가능● 나머지 다...● POST /api/events● PUT /a
스프링 시큐리티 기본 설정 >>시큐리티 필터를 적용하지 않음... >>>● /docs/index.html >> >>로그인 없이 접근 가능 >>>● GET /api/events ● GET /api/events/{id} >> >>로그인 해야 접근 가능 >>>● 나머지 다.
\-Granty Type: 토큰 받아오는 방법\-Oauth Grant Type: Password 타입 및 여러 종류가 존재\-password type : 서비스 오너가 만든 클라이언트에서 사용하는 Grant Type, 즉 서비스에서 계정 정보를 가지고 있을때 사용토큰
리소스 서버 : 리소스 접근을 관리한다. (일단 이렇게 요약하고 좀 더 자세하게 공부 하자)ResourceServerConfig (리소스 서버 설정)Test class (EventOAuthContollerTest)
<<<< 학습 필요!!!!! >>>>외부 설정 : application.properties 다른 설정 파일 읽어와서 bean으로 만들 순 없을까???기본 유저 만들기● ApplicationRunner○ Admin○ User외부 설정으로 기본 유
postman 설정 (토큰 발급 받기)api address : http://localhost:8080/oauth/token● POST /oauth/token● BASIC authentication 헤더○ client Id(myApp) + client secre
CUSTOM한 JsonSerializer 만들기결론 @JsonSerialize(using = AccountSerializer.class)를 선언해서 사용실제 JSON으로 Serialization 할 경우 Account 정보의 id 정보만 포함된다.Account clas
로그인 user 인지 확인 방법handler method 에 @AuthenticationPrincipal User user 추가, 아래와 같이 사용SecurityContextHolder에서 user 정보를 추출 }