JPA 정리
웹 API 읽기
DDaJa HATEOS 관리 Enum 개발
DDaJa 공통 DTO 모델링
JWT 토큰 관리
오늘도 해위~~
파주쪽 카페 다니다 간만에 파스쿠찌 오니 집으로 돌아온 느낌이다. ㅋㅋㅋ
길로그 하는걸 찍은걸 길로그에 올리면서 길로그 하는걸 찍은걸 길로그에 올리고 있는걸 길로그에 올리니 정신 나갈것 같군 ㅋㅋ
아무튼 아침 시작은
ㅋㅋㅋ
어제 쓰다가 까먹은거 올리고 시작해야겠다.
이런거 안써놓으면 또 나중에 해멘다 증말 ㅋㅋ
해멘다(X) -> 헤맨다(O)
지식이 늘었군 ㅋㅋ
아무튼 또 나중에 헤맬수 있으니 길로깅 후딱하고
어제 회사 API 서버 생성하면서 초안 잡은 HATEOS Enum 하고 Parameter 모델링한다음에
JPA 매핑 관련 정리하고 웹 API 좀 읽어야겠다 ㅋㅋ
그럼 스타뜨~
그럼 Next Level로 가보자.
DDaJa HATEOS Enum 개발 기기~~
우선 DDaJa 공통 DTO Modeling은 회사 API Server Modeling 하면서 대충 마무리 됐다.
물론 수정 사항이 많겠지만,,
근데 문제는 여기가 아니라 HATEOS 관련 Enum 사용 개발 건이다..
public enum Licenses {
SELF("GET", "https://api.ddaja.com/licenses/")
, UPDATE("PATCH", "https://api.ddaja.com/licenses/")
, REPLACE("PUT", "https://api.ddaja.com/licenses/")
, DELETE("DELETE", "https://api.ddaja.com/licenses/");
public String method;
public String url;
Licenses(String method, String url) {
this.method = method;
this.url = url;
}
public List<Link> makeLinkList(Long id) {
return Arrays.stream(values()).map(e -> new Link(name(), url+id.toString(), method)).collect(Collectors.toList());
}
}
@GetMapping("/two/{id}")
@ResponseBody
public List<Link> two(@PathVariable(name = "id") Long id) {
return Arrays.stream(Licenses.values()).map(e -> new Link(e.name(), e.url+id.toString(), e.method)).collect(Collectors.toList());
}
어제 회사에서 이런 식으로 개발을 우선 컨셉을 잡아두었는데,
이게 좀 그지같다.
우선 Enum Instance가 Final하다 보니 기본 License 타입으로 .values()로,
Enum 자신 객체 안에다가 선언해서 사용한걸
다른 Class에서 호출할 수가 없다..
그래서 저렇게 그지같이 Controller단에서 우선적으로 Instance화 된 Enum의 .values()를 호출해서 Link 생성 후 List로 모으는데,,
이걸 Interface화 해서 Class에서 공통적으로 관리하고 싶은데,,,
아~~ 머리 터질거 같네
enum은 상속은 안되고 구현만 가능해서 공통 field 구성도 힘든것 같고,
Hateos용도로 사용할 Enum 목록들을 특정화 시켜서 만들기도 덤으로 불가능해진다...
공통 field를 정의 못하니까 특정 타입 enum.field명 할수가 없다...
HATEOS 부분이 너무 맘에 안든다..
stream이 너무 길어지는데 흠,,,
Spring Http 에서 기본 제공하는 ResponseEntity
객체가 있었을 줄이야..
공통 Response 객체 Modeling하고 나서
header랑 status code는 어떻게 하지 ㅋㅋ 나중에 생각해야겠다 하고 있었는데,
한번에 해결해주다니,, Spring 대단해 👍🏻
RestControllerAdvice
로 Custom한 Exception 관리하는 Handler도 성공적으로 잘 적용된다.
근데 기본 Exception을 관장하는 WebMvcAutoConfigure Class가 세팅하는 DefaultHandlerExceptionResolver 랑 충돌나서
Custom Exception만 사용 가능한 상태다 흠....
그 와중에 맥북 온도 너무 뜨거워서 너무 느리다
후 오늘도 달렸다..
내일 Parameter Valid 테스트 해보고
재택 대비 윈도우 회사 개발 환경 셋팅하고
모니터 셋팅 하자..
그러고나서 API 책 이랑 JPA 정리좀 해야겠다.
후,,,
이번 재택으로 왕복 출근 시간하고 준비시간 줄었으니까
목표로 JPA, API 책 다 읽어야겠다.
그럼 gil.end()