0825 개발일지

Yesol Lee·2022년 8월 25일
0

개발일지 - 2022

목록 보기
123/187

오늘 한 일

  • 인프런 모든 개발자를 위한 HTTP 웹 기본 지식 수강 중
  • 개인 연습 프로젝트 : form html, css 수정 / integrationTest 코드 수정 / 개인 연습 프로젝트 빌드 및 구동 확인

HTTP 강의

  • HTTP(HyperText Transfer Protocol): 문서 간 링크인 하이퍼텍스트 전달하는 규약

HTTP의 특징

1. Stateless

  • 서버가 클라이언트의 상태를 저장하지 않음
  • Stateful (상태 저장) : 중간에 응답 서버 바꿀 수 없음
  • Stateless (무상태 지향) : 응답 서버를 쉽게 바꿀 수 있다 = 무한 서버 증설 가능(scale out 수평확장 용이), 장애 생긴 서버 대체 가능
  • 단점 : 상태유지 필요한 경우 (로그인 등) -> 브라우저 쿠키, 서버 세션 등을 이용해 상태 유지. 상태 유지는 최소한만 사용

2. 비연결성 (connectionless)

  • http는 기본적으로 연결을 유지하지 않음
  • 연결을 유지하지 않으면 요청이 없을 때 서버 연결에 사용되는 자원을 아낄 수 있음
  • 단점 : 연결 새로 맺을 때마다 3 way handshake 시간 추가
    -> HTTP 지속연결 (persistent connections로 문제 해결) -> http/2, http/3에서 최적화
  • 한 페이지 로드하기 위해 html, css, js, 이미지 등 많은 자원 필요 -> 페이지 자원 모두 받을 때까지 연결 유지

HTTP 메시지 구조

  • start-line
  • header
  • empty line 공백라인(CRLF): 필수
  • message body

사이드 - 개인 연습

html, css 화면 꾸미기 계속

  • 회원 생성 폼, 게시물 생성 폼, 게시물 수정 폼 화면 수정 완료


textarea에 타임리프로 기존 값 넣기

  • input 태그에는 th:value="${post.content}"를 이용하여 기존 내용 값을 넣었는데, textarea 태그에는 이 방식이 먹히지 않았음
  • 찾아보니 textarea에는 th:text로 값을 넣을 수 있었음
<textarea class="form-textarea" autocomplete="off" placeholder="내용을 입력하세요" th:text="${post.content}" name="content" id="content" cols="20" rows="5"></textarea>

개인 연습 프로젝트 빌드

integrationTest 에러 때문에 빌드가 실패했다. 게시물 삭제()에서 assertion한 결과값이 내 예상과 계속 다르게 나오는 문제 때문이었다. 문제는 예전에 발견했는데 실제 구동해보면 삭제는 잘 되는 상태라 테스트 코드를 잘못 작성한 것 같다고 추측만 하고 수정 없이 넘어갔었다.

  • 삭제 여부 확인 방식 변경 : (기존) 삭제한 post의 id값이 DB에 존재하는지 여부 -> (현재) post 삭제 후 전체 post 개수가 예상한 개수와 맞는지 여부 확인
  • 아직도 기존 방식이 왜 예상과 다른 결괏값이 나오는지는 이해 못했지만, 새로운 방식으로 구현하니 테스트 및 실제 프로그램이 잘 구동된다.
// PostServiceIntegrationTest.java
@Test
void 게시물삭제 () {
	...
    postRepo.delete(savedPost.getPostId());
    
    // 기존
	// Assertions.assertThat(postRepo.hasPost(savedPost.getPostId())).isEqualTo(false);
    
    // 새로운 방식
    List<Post> result = postRepo.findAll();
    Assertions.assertThat(result.size()).isEqualTo(0);
}
profile
문서화를 좋아하는 개발자

0개의 댓글