본문 바로가기

전체 글40

RESTful 하게 설계하기 기본 원칙 REST API를 설계할 때 아래의 두가지가 가장 중요하다. URI는 정보의 자원을 표현 해야한다. 자원에 대한 행위는 HTTP Method로 표현한다. 블로그에 게시글을 수정할 때의 예시로 들어보자 URI는 정보의 자원을 표현해야 한다. 좋지 않은 예 GET /boards/1/posts/update/1 URI는 자원을 표현 해야한다. 따라서 update같은 행동에 대한 정보가 포함되선 안된다. 자원에 대한 행위는 HTTP Method로 표현한다. 앞의 내용과 이어져, update같은 행동에 대한 정보는 HTTP Method로 표현되어야 한다는 뜻이다. 따라서 요청은 아래와 같이 수정되어야 한다. PUT /boards/1/posts/1 PATCH /boards/1/posts/1 [참고하기] 상.. 2021. 3. 25.
REST , RESTful API가 무엇일까? REST는 Representational State Transfer라는 용어의 약자이다. 직독하면 표현적인 상태 전송이다. TTP/1.0, 1.1 스펙 작성에 참여했었고 아파치 HTTP 서버 프로젝트의 공동설립자이기도한 로이 필딩의 박사학위 논문에서 소개된 아키텍쳐이다.(주의. 표준은 아니고 가이드라인이다.) REST의 조건 client-server 서버는 API를 제공, 클라이언트는 인증 등 상태를 가지는 것들을 직접 관리한다. 서버는 자원제공, 클라이언트는 자원 요청을 하는식의 역할이 확실하게 구분되어 상호의존성이 줄어들게 된다. stateless 클라이언트와 서버의 통신에는 상태가 없어야 한다. 서버는 클라이언트의 상태를 모르고 모든 요청이 필요한 정보를 전부 가지고 있어야 한다. 로그인등의 기능을.. 2021. 3. 25.
[스프링부트로 API 만들기] 서버 배포 준비해보기 자! 이제 API를 구현하고, 문서화까지 마쳤으니 배포할 일만 남았다. jar 파일로 빌드 스프링 부트는 내정된 서버가 있어, 배포 과정이 복잡하지 않다. gradle을 사용해 빌드를 하면 자동으로 생성되도록 되어있다. 빌드가 완료되면 build/libs 하위에 projectname-version.jar 파일이 생성될 것이다. > build.gradle 의 일부 group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' > settings.gradle rootProject.name = 'demo' 프로젝트명과 버전정보는 위에 보이는 부분에서 수정이 가능하다. 이제 이 파일을 서버에 옮겨가서 환경에 맞는 jvm을 설치한 후 아래와.. 2021. 1. 5.
[스프링부트로 API 만들기] Spring Rest Docs를 사용해서 API Docs 자동으로 생성하기 이제 API를 만들고 검증까지 했다. 이제 테스 트롤 완료한 API들은 사용할 수 있는 상태이다. 하지만 아직 API를 사용할 사람들에게 어떻게 써야 하는지 알려줄 방법이 없다. API Documents. API Documents는 API 사용법을 알려주는 문서이다. 쉽게 말하면 매뉴얼이다. 공개된 API는 이런 문서들이 제공이 되어야 사용자들이 쓸 수 있기 때문에 필수로 작성해야 하는 문서이다. 자동화 도구 하지만, API 스펙을 문서로 관리하는것은 상당히 귀찮다. API에 변경이 생겼을 때마다 찾아서 고쳐야 하며, 모두 실제로 한 번씩 확인해보며 작성을 해야 하기 때문이다. 그렇기 때문에 이런 문서화를 자동화할 수 있는 도구들이 생겼다. 그중 주로 사용되는 도구들은 Swagger와 Spring Res.. 2021. 1. 5.
[스프링부트로 API 만들기] Junit 으로 API 테스트 코드 작성하기 지금까지 간단하게 API를 구현해보았다. 이제부터는 기능 구현만큼이나 중요한 테스트 코드를 작성해보자 테스트 코드 테스트 코드는 작성한 소프트웨어가 의도한 대로 작동하는지 확인해보는 코드이다. 기존에는 테스트 계획을 세워 수동으로 하였으나 최근에는 테스트 코드를 작성하여 검증을 하는 추세이다. 테스트 코드가 잘 짜여 있으면, 클라이언트 쪽에 서버의 동작이 완벽하다고 보장을 할 수 있음과 동시에 코드의 수정이 있었을 때 일어나는 좋지 않은 side-effect를 빠르게 확인할 수 있다. 또한 검증하는 과정에서 소프트웨어의 각 부분이 지켜야 하는 규칙을 정의하기 때문에 테스트 코드를 보고 빠르게 프로젝트를 파악할 수도 있다. 고로 테스트코드는 선택이 아니라 필수이다. 자세한 내용은 이후에 따로 포스팅하겠다... 2021. 1. 5.
DB 예약어 중복조회 서비스 Reserved-Words 서버 개발을 하면서 여러 종류의 DB를 사용하다 보니 각 시스템, 버전별로 예약어들이 다른 문제가 있어 사용하는 DB시스템에 통합적으로 확인을 하고 싶어 시작한 프로젝트이다. 프로젝트 진행 React.js 기반으로 웹에서 통합조회를 할 수 있도록 하고자 하였다. 사용자가 사용할 데이터베이스와 버전 정보를 선택하고, 사용할 변수명을 입력하면 사용 가능 여부를 피드백받을 수 있도록 하였다. 이번 프로젝트는 오픈소스로 진행을 해보고 싶은 욕심히 있었다. 그래서 데이터베이스 처리를 전부 파일로 관리하는 것을 선택하였고, 약 100종류의 시스템과 버전의 데이터를 처리한 상태이다. 앞으로의 방향 오픈소스로 계속 발전해나가고 싶은 생각이 있다. DDL문을 입력하면 컬럼명을 인식해서 사용 가능한지 여부를 확인해주는 기.. 2021. 1. 4.