목록전체 글 (106)
개발스토리
2021년은 많은 경험을 하고 스스로의 길을 정하게 된 한 해가 된 것 같다. 2021 학교 활동 4학년의 시간을 보냈다. 아무래도 2학기는 인턴 활동으로 학교 생활을 하지 않게 되면서 1학기가 나의 마지막 학교 생활이었다. 사실 비대면이 계속 되면서 제대로 된 학교 생활을 하지는 못해서 아쉽지만 이제는 끝이니까 뭐,, 아무래도 1학기에는 졸업작품(캡스톤)을 만들었던 게 제일 기억에 남았다. 뜻이 맞는 친구들 + 나까지 5명에서 영어 단어 암기를 도와주는 안드로이드 어플을 만들었다. 결과는 A+로 1등을 했던 것 같다. 하지만 과정은 다사다난했던 것 같다. 배포를 목적으로 기획을 진행했고 1개월반-2개월 정도 흐른 상황에서 저작권에 늪에 빠지게 되었다.. 한영사전 API를 당연히 제공해줄 것이라고 생각했..
API를 만들어 내면서 단 건 조회 시 데이터가 없다면 response를 빈 객체로 내려주기로 했다. 아래와 같은 상황을 예시로 두겠다. 한 명의 유저를 조회하는 GET test.com/users/{userId}라는 API가 있다고 보자. 성공적으로 조회가 완료가 됐다면, 아래와 같이 response를 보내주었다. { "success": true, "response": { "id": 1, "nickname": "king" }, "error": null } 하지만, GET test.com/users/100 즉, 100번의 유저를 조회하려하는 데 100번의 유저가 없다면...?? { "success": true, "response": { "id": null, "nickname": null }, "error"..
java.lang.IllegalArgumentException: urlTemplate not found. If you are using MockMvc did you use RestDocumentationRequestBuilders to build the request? Rest Docs를 적용을 하고 api 문서를 뽑아내는 중에 위와 같은 오류를 만났다. 어쩌다 만났느냐..!? api 문서를 만들려면 당연히 클라이언트에게 api를 사용하기 위한 모든 정보를 적어서 줘야 한다. 예를 들어 user를 조회하기 위한 api url이 domain/user/{username}이라고 치자. domain/user는 변하지 않지만 username은 동적이다. joo라는 사용자를 조회할 수도 있고 kim이라는 사용자를 ..
전 포스팅에 이어서 이번에는 spring 프로젝트에 적용한 포스팅을 쓴다. 주요 라이브러리 버전 - spring boot 2.x.x - gradle 6.x - junit 5 build.gradle plugins { id 'org.springframework.boot' version '2.x.x' id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' // asciidoc 파일을 변환해서, build 폴더에 복사해주는 플러그인! id 'org.asciidoctor.convert' version "1.5.6" } asciidoctor { dependsOn test // gradle build 시 test -> asciidoctor 순으..
회사에서 새로운 프로젝트를 시작하는데 REST API 설계부터 하고 api 문서를 뽑아내기 위해 REST Docs를 적용하기로 했다. Spring REST Docs? - Asciidoctor를 사용해서 API 문서를 생성하도록 돕는 것이다. 나는 여러 사이드 프로젝트를 하면서 API 문서를 전달하기 위해 swagger, postman, notion 등을 사용했었다. 이번에는 REST Docs를 적용해야 해서 오랜만에 글을 써본다. 우선 여러 방법으로 api 문서를 뽑아내면서 느낀 점을 간단히 소개해보겠다. swagger - 실제 코드에 어노테이션들이 추가 되면서 문서가 생성된다. - 가독성 측면에서 여러 어노테이션이 달리면 지저분해 보일 수 있다. 실제로 지저분해 보이긴했다. - 하지만 많이 쓰이는 이유..