웹 API 설계 원칙을 통한 REST API 설계 패턴과 실전 사례
·
Server/ETC.
REST API 설계에 대해 고민하게 된 배경첫 개발자로서 취업 후, "API Path만 보고도 어떤 기능을 하는지 알 수 있도록 설계해야 한다."라는 말을 들었다.이를 위해 좋은 API 설계 원칙을 고민하며 여러 책을 찾아보게 되었다.그중 제임스 히긴보텀이 작성한 "웹 API 설계 원칙"이라는 책을 읽게 되어, 해당 내용을 기반으로 정리하게 되었다.후반부에 들어서며 RPC, 이벤트, 마이크로서비스에 어울리는 API 설계에 대한 내용이 작성되어 있지만,전반부에 작성된 REST API에 대한 내용만 정리하였다.API란 무엇일까?API(Application Programming Interface)의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타낸다.인터페이스는 두 애플리케이션 ..
[Git] BFG Repo Cleaner 사용한 Git Commit 또는 History 삭제
·
Server/ETC.
BFG Repo Cleaner 시도 배경 개발을 진행하던 도중 Github Commit에 API Key가 그대로 노출시켜 버리는 상황이 발생했습니다. Access Key 및 Seceret Key가 노출된 상황이므로 대처가 필요했습니다. Git Command를 사용하여 히스토리를 제거하는 방법이 존재하지만, 이후 작업한 히스토리가 꽤 많이 쌓여 있었기 때문에 히스토리 손실에 대한 부담으로 해당 방법을 사용하기 조심스러웠습니다. 해당 문제를 해결하기 위한 다른 방법을 찾던 도중 BFG Repo Cleaner라는 방법을 찾게 되어 시도하였습니다. BFG Repo Cleaner 설치 brew를 통한 설치 % brew install bfg BFG Repo Cleaner를 사용한 특정 값 Remove 방법 1. 노..
[Github] Code Review
·
Server/ETC.
Code Review PR(Pull Request)를 날렸다면, 이제 다른 사람들의 PR에 리뷰도 남길 줄 알아야 한다. Github를 이용해서, Reviewers를 설정할 수 있지만 현재 해당 기능은 유로화 되어 있다. 인원당 4$를 지불해야 리뷰어 지정이 가능하기 때문에, 해당 기능은 제외하고 리뷰 남기는 방법만 남겨본다. 리뷰를 남기자 리뷰를 남길 PR에 들어가서 File changed 탭을 선택한다. PR작성자가 리뷰를 모두 반영하여 수정하였거나, 해당 PR에 딱히 수정사항이 없다면 Approve를 선택한 후, Submit review를 진행하면 된다. Comment의 경우에는 딱히 수정할 필요는 없지만, 상대방에게 남기고 싶은 의견(의도를 묻는다던지 확인을 요한다던지 등등)이 있을 때 사용하고,..
[Github] Pull Request
·
Server/ETC.
Pull Request 협업을 진행하다 보면 Pull Request, PR을 많이 이용하게 된다. 바로 Main에 Merge를 때리는 것이 아닌, 해당 브랜치를 Main에 합쳐도 되겠습니까?라고 함께 작업하는 사람들에게 동의 요청하는 것이다. 이 과정에서 리뷰를 나누고, 수정한 다음 모두의 승인(Approve)이 떨어지게 되면 우리는 Main에 Merge를 진행하게 되는 것이다. (Main에서 해당 Branch를 Pull 하는 것이다.) PR 진행 일단, 브랜치를 만들어서 작업을 진행해야한다. 모든 작업을 마쳤으면 커밋과 push를 진행한다. 다음과 같이 feature/sign -> origin: feature/sign이라는 브랜치로 push를 진행하게 된다. main에 push 하는 것이 아닌, 작업 ..
[Github] Issue 생성
·
Server/ETC.
Github Issues Github를 통해서도 이슈관리를 진행할 수 있다. 물론 Jira 등의 이슈 관리 툴에 비하면 부족한 것은 사실이나, 브랜치 생성 등을 바로 진행할 수 있다는 장점도 존재한다. 실제로 이슈를 위해 사용하기도 하나, 이미지 업로드 등을 위한 목적으로 사용하기도 한다. Issue 등록 Repository의 Issue탭에 들어가서 New issue 버튼을 클릭한다. 제목과 내용을 입력하고, Assignees에서 해당 이슈를 처리할 사람, Labels를 통해 어떤 종류의 이슈인지 등록한다. 우측의 Development 칸의 Create a branch를 만들게 되면 해당 이슈의 브랜치를 생성할 수 있다. 어느 레파지토리에, 어떤 소스를 선택하여 새로운 브랜치를 만들지 메뉴를 확인할 수 ..
[Postman] DTO와 File을 동시에 전송하는 법
·
Server/ETC.
게시물을 업로드하면서, 해당 게시물의 썸네일을 이미지로 저장해야 하는 상황이 발생했다. API를 구성하고 테스트를 돌리기 위해 Postman을 실행시켰는데 에러가 발생했다. HttpMediaTypeNotSupportedException .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'multipart/form-data;boundary=--------------------------186452156954590287007968;charset=UTF-8' is not supported] 다음과 같은 에러가 발생했다. 위의 에러는 컨트..
[GitLab] Branch CI/CD Pass 하는 방법
·
Server/ETC.
프로젝트를 진행하면서, 우리 프로젝트팀이 구성한 깃 브랜치 전략은 Master, Develop, Feature 3가지를 메인으로 브랜치를 구성한 후 HotFix를 유동적으로 관리하는 전략을 채택했다. 각자 feature에서 기능들을 만든 후 Develop으로 머지를 하고, 이상이 없으면 Master에 다시 한번 머지하는 방식으로 깃을 관리한다. 배포 오류 배포는 Master와 Develop부분에서 이뤄질 수 있도록 잠시 설정해뒀었는데 Develop에서 CI/CD jobs가 계속 failed 되는 현상이 발생되었다. 에러코드만 봤을 때는 로그인 관련 문제인 것 같았은데, 지금까지 이상이 없어서 괜찮은 것 아닌가?라는 생각을 했었다. 하지만 Master 부분에서만 머지를 했을 때, 또는 이 상태에서 Mast..
[GitLab&GitHub] GitLab 작업을 GitHub에 연동하기, 미러링
·
Server/ETC.
개요 프로젝트를 진행하면서 깃허브가 아닌 깃랩을 사용하다 보니, 깃허브의 잔디가 비어 가는 것을 확인할 수 있었습니다. 깃랩에 이어서 꾸준히 1일 1커밋을 하고 있었지만, 비어있는 잔디를 보니 마음 한 구석이 비어버린 느낌이었습니다. 다행히 같이 공부하는 동생이 GitLab에 미러링 기능이 있다는 것을 알려주었고, 나도 도전해보려 한다. GitHub Token 발급 Settings 좌측 하단에 있는 Developer settings로 들어간 후 하단의 Personal access tokens로 들어갑니다. (Fine-grained tokens라는 게 새로 나왔나 봅니다.) expiration 기한을 지정해야 하는데, GitLab을 언제까지 사용할지 모르니 일단 무기한으로 설정하였습니다. Repo에 관련된..
코드플리
'Server/ETC.' 카테고리의 글 목록