[내배캠/22일차] TIL - Spring 입문 과제 발제

euphony·2025년 1월 23일
0

내일배움캠프

목록 보기
37/66

✅오늘의 한 일

  • 기초 Spring 3주차 완료
  • 기초 Spring 4주차 완료
  • Spring 입문 과제 시작

💻오늘의 학습

Spring 입문 과제 발제 - 일정 관리 앱

오늘부터 Spring 입문 과제가 시작되었다. Java 과제에서는 아무래도 조금 익숙하다보니 요구사항에 대해 모두 이해하고 시작했다면, Spring은 전혀 해본 적이 없어 발제때부터 난감했다.

API 명세서

  • API 명세서 : API명, 요청 값(파라미터), 반환 값, 인증/인가 방식, 데이터 및 전달 형식 등의 정보들을 일관된 형식으로 기술한 것.

API 명세서부터 어떻게 작성해야되는지 몰라 꽤 오래 걸렸다. 다음과 같이 노션으로 작성해보긴 했는데, Postman을 이용해 API 명세서를 작성할 수 있다고 해서 찾아보느라 시간이 더 걸린 것 같다.

Postman에서는 APIs - Definition에서 JSON으로 작성하면 문서로 만들어준다. Definition은 하나로 작성하고, 그 안에 여러 엔드포인트(경로)를 추가해서 생성, 조회, 수정, 삭제 같은 기능들을 정의하면 된다. 물론 JSON 형식으로 API 정의를 작성하는 방법을 몰라 한참 헤매긴했다.

POST 부분만 보면, 다음과 같이 작성했다. 노션에 작성한 내용을 그대로 JSON 형식으로 옮겨온 모습이다.

      "post": {
        "summary": "Create a schedule",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "todo": {
                    "type": "string",
                    "description": "Todo description"
                  },
                  "writer": {
                    "type": "string",
                    "description": "Writer of the todo"
                  },
                  "password": {
                    "type": "string",
                    "description": "Password for editing/deleting"
                  }
                },
                "required": ["todo", "writer", "password"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Schedule created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": { "type": "integer" },
                    "todo": { "type": "string" },
                    "writer": { "type": "string" },
                    "createdAt": { "type": "string", "format": "date-time" },
                    "updatedAt": { "type": "string", "format": "date-time" }
                  }
                }
              }
            }
          }
        }
      }

그러면 이렇게 깔끔한 문서로 나오게 된다. 지금보니 오류 상황에 대한 상태 코드가 없어 추가해야할 것 같다.

챌린지 반 - 코드로 대화하기

오늘의 교훈 : 코드 컨벤션을 잘 지키고, 클린코드를 향해 나아가자!

  • 빈 값과 잘못된 결과값에 대한 정의(정의되지 않은 값인 매직넘버를 쓰지말자)
  • 변수에 대입해서 끌고가지 말고 바로 리턴하는 early return을 사용하자
  • 하드코딩된 값을 처리하자
  • 복잡한 조건은 하나의 메서드로 빼보자
  • 부등호도 시선을 따라 작성하자
  • 정상적인 처리가 바로 보이도록 코드를 짜자
  • 스트림으로 처리해서 함수형으로 대화하자
  • depth를 깊게 가져가지 말자

유익한 오늘의 강의! 다시 영상을 보며 정리해봐야겠다.

📝오늘의 회고

드디어 Spring 첫 과제가 나왔다. Spring은 난생 처음이었기 때문에 하나부터 열까지 다 모르겠다는 생각만 들었다. 일단 매니저님께서 오늘 꼭 과제를 시작하라고 하셔서 API 명세서만 만들어놓긴 했다. 하지만 Spring 강의 4주차부터 이해가 잘 안가서 굉장히 혼란스러운 상태다. 일단 내일 실습을 해보고 진도를 더 나가봐야겠다.

📌내일의 할 일

  • 기초 Spring 5주차 완료
  • Spring 입문 과제 Lv.1까지 완료
  • 자바 중급 2편 섹션9 완료

0개의 댓글

관련 채용 정보