티스토리 뷰
Lv2 - 4주차 미션 : 비동기 통신&API / 댓글 추가 기능 구현
https://github.com/woowacourse/jwp-blog
학습목표
- 비동기 방식으로 통신하는 경험을 하고 프로세스를 이해한다.
- API 문서 자동화를 경험한다.
미션
- 댓글 기능을 비동기 방식으로 구현하기
- 기존에 구현했던 기능 중 필요한 부분은 비동기로 구현해보기
- 댓글생성 포함해서 반드시 3군데 이상은 적용해보기
- Script를 활용하여 자동 배포하기
- RollingFileAppender를 이용하여 배포한 서버의 로그를 저장하기
- (adv) Spring REST Docs를 이용하여 문서 자동화 하기
- (adv) 파일첨부 기능 구현하기
- (adv) 외부 API 호출하기
체크리스트
- 요청에 대한 Acceptance Test를 구현했는가
- HTML 중복 제거하였는가
- 테스트의 중복을 제거하였는가
- URL 컨벤션을 지키며 구현했는가
- 서버 요청/응답 시 비동기 방식을 적절하게 사용하였는가
- 문서 작성을 자동화 하였는가
- 로그를 적절하게 잘 남기고 저장하고 있는가
새롭게 알게 된 것
- Ajax
- Spring Rest Docs
느낀점
- 학회참석으로 미국에 가있던 기간이라, 미션에 제대로 집중을 못했다.
- 당시엔 모든게 새롭다보니 기능구현에 급급해서, 지금보니 코드에 아쉬운점이 너무나 많다.
마치 지우고싶은 과거처럼나중에 혼자서 블로그를 다시 만들어볼 시간이 생기면 좋겠다. - 레벨1때와 달리 주차마다 등장하는 개념들이 훨씬 더 다양하고 거대하다. 따라서 그때 그때 모든걸 학습할순 없지만, 주요 키워드들을 잘 기억하고 차근 차근 학습해가야할 것 같다. 레벨2, 3에서 많은 것들이 머릿속에 들어오겠지만, 그에 잠식되지않고 큰 흐름을 놓치지 않도록 노력해야겠다.
내 코드, 피드백 관련
-
XMLHttpRequest
->Ajax
, XML보단 JSON을 사용 -
@Controller
보다@RestController
를 써서,@ResponseBody
가 자동으로 붙는 효과를 취한다. 전자는 페이지 리턴에, 후자는 객체 리턴에 주로 사용한다. -
Ajax 테스트
-
contentType으로 보내고, accept형식으로 받을 것이다.
-
body를 예전처럼 BodyInserter로 넣지않고, JSON으로 보내기위해 Mono를 이용한다. (아직 Mono개념 깊게파진말고 일단 이용)
-
jsonPath로 검증
@Test public void test1CreateGithubRepository() { RepoRequest repoRequest = new RepoRequest("test-webclient-repository", "Repository created for testing WebClient"); webTestClient.post().uri("/api/repos") .contentType(MediaType.APPLICATION_JSON_UTF8) .accept(MediaType.APPLICATION_JSON_UTF8) .body(Mono.just(repoRequest), RepoRequest.class) .exchange() .expectStatus().isOk() .expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8) .expectBody() .jsonPath("$.name").isNotEmpty() .jsonPath("$.name").isEqualTo("test-webclient-repository"); }
-
-
Spring Rest Docs
- 차근차근 따라하기
- 강의문서 및 필기 참고
Rest Docs
vsSwagger
-
테스트할 때 사용하는 3가지 객체 :
MockMvc
,WebTestClient
,RestAssured
-
스키마, 어떻게 받을 것인가에 대한 표준. 계속해서 변경된다, map으로 다 받아버리는 방식도 있다. 하지만 그러면 런타임에만 알수있고, 클래스로 만들어야 컴파일타임에 확인가능하다. map을 꺼리고 가급적 클래스를 만들자
프론트
-
`var`를 지양하고, `const`와 `let`을 이용하자!
-
백틱 유용!!
- controller, service와 같이 백엔드처럼 프론트코드로 구조화시킬 수 있었다. 그 과정에서 자연스레 아래와 같이, 하나하나 분리해갈 수 있었다.
- 로직 분리
- API 분리
- 중복되는 상수, String 등 분리
- HTML 마크업부분을 별도의 .js로 분리
- ...
/js/template.js
const commentTemplate = (comment) => {
return
`<div class="comment">
<div>
...
</div>
</div>`
}
- 이땐 몰랐지만 레벨 후반에 토비스프링을 읽으며, @DirtiesContext의 기능과 성능이슈에 대해 이해할 수 있게 되었다
'우아한 테크코스' 카테고리의 다른 글
우아한 테크코스) Lv2 - 남은 학습주제 (0) | 2019.09.17 |
---|---|
우아한 테크코스) Lv2 - 5~8주차 [미니프로젝트 - 인스타그램 클론] 미션 후기, 코드리뷰 (0) | 2019.09.17 |
우아한 테크코스) Lv2 - 3주차 [블로그 - 빌드&배포 구성 / 댓글 관련 기능 구현] 미션 후기, 코드리뷰 (0) | 2019.09.16 |
우아한 테크코스) Lv2 - 2주차 [블로그 - Spring Data JPA/회원 관련 기능 구현] 미션 후기, 코드리뷰 (0) | 2019.09.13 |
우아한 테크코스) Lv2 - 1주차 [블로그 - Spring Boot/게시글 관련 기능 구현] 미션 후기, 코드리뷰 (0) | 2019.09.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 회고
- Algorithm
- Android Studio
- JPA
- 해외여행
- 리버싱
- mysql
- dfs
- Stack
- 프로그래머스
- socket
- graph
- C
- javascript
- bfs
- Android
- Data Structure
- sort
- 우아한 테크코스
- FRAGMENT
- Vo
- 웹해킹
- brute-force
- git
- webhacking.kr
- OneToMany
- 개발자
- reversing
- Java
- queue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함