MySQL(52)
-
[일정 관리 앱] 댓글 CRUD API 테스트
댓글 CRUD 에 대한 구현을 진행한 후 진행한 API 테스트를 기록하기 위해 작성한다. 또한 요구사항에 명시된 '영속성 전이' 에 대한 부분도 간략하게 나마 정리해볼 생각이다. 이번에 작성한 코드는 여기서 확인할 수 있다. 1. 댓글 생성 댓글 작성시 쿼리 파라미터와 RequestBody 로 요청 파라미터를 받도록 구현했다. 쿼리 파라미터에는 댓글을 작성할 일정의 'id' 값이 RequestBody 에는 작성할 댓글의 '본문(body), 작성자명(author)' 정보가 담겨있다. 정상 요청을 하면 '201 Created' 응답과 생성된 댓글의 정보가 반환된다. 요청 파라미터가 유효하지 않을 경우 아래와 같은 응답과 예외 정보를 반환한다. '(1)' 의 경우 존재하지 않는 일정에 댓글을 작성하는 경우이..
2024.10.11 -
[일정 관리 앱] 일정 수정, 삭제 API 테스트
'일정 수정 및 삭제' 에 대한 구현 후 진행한 API 테스트 기록을 남겨본다. 단순히 기록뿐만 아니라 진행 당시 느낀 '이후에 염두해야 할 부분' 또한 남겨본다. 구현을 위해 작성한 코드는 여기서 확인 가능하다. 1. 일정 수정 Query String Parameter 로 'scheduleId' 를 RequestBody 로 'title, body' 정보를 요청 파라미터로 전달하면 해당되는 일정을 조회해 해당 일정의 정보를 수정 DB 에 반영한다. 이 부분을 구현하면서 왜 다수의 개발자들이 '수정' 이란 기능을 수행후 변경 값을 반환하지 않는지 약간이나마 이해할 수 있었다. 맨 처음에는 수정 정보를 RequestBody 로 전달 받아 요청에 해당되는 '일정' Entity 의 필드를 수정하고 '@Tran..
2024.10.09 -
[일정 관리 앱] 일정 생성, 조회 API 테스트
'일정 생성' 과 '일정 조회(단건)', '일정 목록 조회' 에 대한 구현을 진행하고 진행한 API 테스트를 남겨본다. 무작정 남기는 것은 아니고 이후 신경써야 할 부분을 기록할 필요를 느껴 작성하게 되었다. 이번에 작성한 코드는 여기서 확인이 가능하다. 1. 일정 생성 일정을 정상 요청하게 될 경우 생성된 Entity 의 정보를 'ResponseSchedule(DTO)' 에 담아 반환한다. 하지만 예외를 해결하려 작성한 '예외 처리' 과정에서 오히려 문제가 생겼다. 요청 값에 대한 '유효성' 검증의 경우 'validation' 을 사용했는데, 어째서 인지 'title' 필드에 대한 예외가 응답에 표기되지 않았다. 아래는 '일정 생성' 에 대한 요청 파라미터를 담는 'AddSchedule(DTO)' 로 ..
2024.10.08 -
[일정 관리 앱] JPA 를 사용한 일정 관리 앱 구현시작
'Spring 숙련 주차' 의 개인과제는 'JPA' 를 사용한 '일정 관리 앱' 구현이다. 이전 프로젝트를 확장해 진행해도 되지만, 아직 Spring 을 다루는 것이 완벽하다고 할 수 없기에 연습을 위해 새로운 프로젝트를 생성해 이번 과제를 진행하기로 결정했다. 이번 과제는 'JPA' 로 기본적인 CRUD 를 구현하고, 'JWT(JSON Web Token)' 을 활용해 '인증/인가' 에 대한 부분까지 구현하는 것이 목표이다. 요구사항을 확인하고 정리해 보니 저번 과제와는 다르게 각 레벨별로 요구사항을 프로젝트에 반영하기로 하였다. 요구사항이 늘어남에 따라 기존에 작성한 코드가 확장을 잘 받아낼 수 있는지(?) 를 확인하고 싶기도 하고 아직 미숙하기에 요구사항을 하나하나 따라가며 구현을 하고자하는 생각도 ..
2024.10.07 -
[일정 관리 앱] 요구사항 반영 후 API 테스트
과제에 명시된 모든 요구사항을 반영 후 아래와 같이 구현한 기능에 대한 API 테스트를 진행해 보았다. 1. 일정 생성 '일정 생성' 요청 시 일정 생성에 필요한 '할 일(본문)', '작성자 이름', '작성자 이메일', '비밀번호' 정보들을 Http 메세지 본문(Request boy) 에 담아 요청을 하도록 구현했다. '유효한 요청 값' 들이 전달될 경우 일정을 DB 에 저장하며, 저장(생성)한 일정의 '아이디(id), 할 일(body), 작성자 이름(authorName), 일정 작성일(createAt), 일정 수정일(updateAt)' 정보를 반환해 준다. 이 때의 HttpStatus 는 '201 Created' 이다. '유효하지 않은 요청 값(들)' 이 전달될 경우는 아래와 같다. 'body, pas..
2024.10.04 -
[일정 관리 앱] Level 4 요구사항 정리, DB 세팅
'필수 기능' 에 대한 예외를 처리했으니 이번에는 '도전 기능' 의 'Lv.4 요구사항' 을 반영해보려 한다. 해당 요구사항은 이미 정리를 한 번 했지만 생각할 것이 많아 해당 게시글에서 다시 한 번 정리한 뒤 요구사항을 프로젝트에 반영해 보고자 작성하게 되었다. 1. 요구사항 정리 현재 '필수 기능' 요구사항을 반영한 프로젝트의 경우 'schedule' 테이블에서 '작성자명(author)' 만으로는 이게 누가 작성한 것인지 명확하게 확인을 할 수 없다. 요구사항에서는 '동명인' 문제를 예시로 들어주었는데, 다른 사용자가 같은 작성자명을 사용할 경우 앞서 말한 문제가 발생한다. 물론 이런 문제를 해결하기 위해서는 각 사용자별로 '사용자 정보(우리가 흔히 말하는 계정)' 를 저장해두고 사용자 정보와 요청 ..
2024.10.02