많은 회사에서 사용하고 있고, 공고에서도 작성되어 있는 Rest API에 대해서 정리해서 기억해두고자 한다. 사용해보기도 하였지만, 막상 Rest API가 무엇인가요 라고 질문 받게 되면 간략하게만 대답한 것 같다. 1. REST API 란? - REST 는 REpresetational State Transfer 의 약자이다. - 한줄로는 아래와 같이 정의할 수 있다. HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표헌하여 특정한 형태로 전달하는 방식 - 자원을 이름(자원의 표현) 으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. - CRUD 연산에 대한 요청을 할 때, HTTP URI(Resource)를 통해 자원을 명시하고, HTTP Met..
프로젝트 개발 도중에 싱글톤 패턴을 사용하여, DB에서 데이터를 불러와 저장 후에 사용하고자 하였다. 그러나, 스프링 객체생성주기로 인해 싱글톤으로 생성한 인스턴스에서 DB 접근이 어려웠고, 공부하여 해결을 하고 싶었지만, 시간이 부족하여 유사한 방법으로 해결하고자 하였다. Spring에서 제공하는 @Component 어노테이션을 사용하여 유사하게 구현해보았다. 1. @Component 어노테이션 - @Component 어노테이션을 붙인 클래스를 spring에서 스캔할 수 있도록 설정이 필요하다. ..... - 태그의 base-package에 스캔하고자 하는 패키지 경로를 설정한다. (해당 글에서는 예제를 위해 test 아래 모든 경로로 선언하였다.) - 패키지가 여러개일 경우 위 태그를 여러개 작성하여..
데이터 목록을 주고 받을 때, List 형식으로 구성된 리스트로 주고받을 때가 있다. 이러한 경우에 원하는 키워드로 원하는 데이터를 가져오는 방법에 대해 알아보려고 한다. 1. Lambda 사용 - lambda의 stream 을 이용해 데이터에 접근, 리턴을 한다. (Map을 사용하고자 하였지만, 이전에 사용한 코드(VO)를 재사용해본다... 절대 귀찮아서는 아니다....) public class blogTest { public static void main(String[] args) { List blogVOList = new ArrayList(); blogVO test1 = new blogVO("hwang", "M", "28", "test@naver.com"); blogVO test2 = new blo..
프로젝트를 진행하다보면 개발 중에 생성한 객체로 이루어진 배열을 원하는 값에 따라 정렬이 필요할 때가 있다. 이러한 경우에 아래의 방법을 통해서 정렬이 가능하다. 아래와 같은 객체를 생성해본다. public class blogVO { private String name = null; private String gender = null; private String age = null; private String id = null; public blogVO(String name, String gender, String age, String id) { super(); this.name = name; this.gender = gender; this.age = age; this.id = id; } public S..
MySQL에서 데이터 정렬시 한글(자음) -> 영어(알파벳) 순으로 정렬이 필요했다. 1. 데이터 정렬 안한 데이터 상태 정렬 데이터 상태(한글(자음) -> 영어(알파벳)) 2. 쿼리 테이블에는 한글, 영어만 있다고 가정된다.(특수문자, 숫자 X) 정렬하고자 하는 컬럼(tag_name)의 첫 글자를 구하여, ASCII 코드 값을 구한다. ASCII 코드에서 영어는 65~122 이므로, 1번에서 구한 값 ASCII 코드 값이 123보다 작으면 영어로 판단. 영어 일시 순서를 2번째로 하고, 그 이외에는 첫번째(한글)로 한다. SELECT * FROM tag_info ORDER BY ( CASE WHEN ASCII(SUBSTRING(tag_name,1)) < 123 THEN 2 ELSE 1 END ), ta..
웹 서비스를 개발하면서 404, 500 에러 등 많은 에러가 발생하고 각각의 에러에 맞는 화면을 보게 됩니다. 해당 글에서는 에러가 발생하면 해당 에러에 맞는 에러 페이지를 보여주도록 설정해보도록 하겠습니다. 개발환경은 아래와 같습니다. SpringBoot : 2.4.4 Java8 thymeleaf SpringBoot에서 간단하게 에러페이지를 설정해보도록 하겠습니다. 1. 에러페이지를 관리할 Controller를 생성하여 ErrorController 인터페이스를 상속받아 에러 컨트롤러를 생성합니다. 2. error 페이지를 만듭니다. 1. 에러컨트롤러 생성(CustomErrorController) - 기본적으로 Spring Boot는 모든 Error를 적적한 방식으로 처리하는 /error 로 맵핑을 제공..
해당 내용에 추가하여 새롭게 글을 작성하였습니다. 부족한 부분은 여기 를 통해 확인 부탁드립니다~ [Vue.js] Vue + SpringBoot + Mysql 를 이용한 Todo 구현(1) - 프로젝트 구성하기 블로그를 하면서 여러 개의 글을 작성하였는데, 그중에서도 vue.js 와 springboot 연동하는 글이 제일 많이 봐주셨다. 매번 다른 글도 작성하면서 간단하게 db까지 연동하는 글을 작성하고자 하였지 dev-jwblog.tistory.com 대부분 프론트엔트 프레임워크(vue.js, react.js 등)을 사용할 때에는 백엔드 구성을 Node.js를 사용합니다. 하지만, SpringBoot로도 백엔드를 구성하여 사용을 해보고자 하여 한번 적용해보기로 하였습니다. 해당 글에서는 SpringBo..
이전 글에서 운영환경까지 설정하며, 최종적인 서비스 구성은 끝이 났습니다. 그러나, 해당 서비스를 접속하기 위해선 ip를 알아야만 접속할 수 있습니다. DNS(Domain Name Service)을 사용하여 우리가 아는 이름을 통해 접속할 수 있도록 하겠습니다. 1. AWS Route 53를 통한 도메인 구매하기 - 많은 호스팅을 제공해주는 사이트가 있지만, 해당 글에서는 AWS Route 53을 사용하여 도메인을 구매(유료)하여 호스팅 될 수 있도록 하겠습니다. - AWS에서 Route 53을 검색합니다. - 도메인 등록 에 사용하고자 하는 도메인을 입력 후 확인 버튼을 클릭합니다. - 먼저 입력한 도메인이 사용 가능하다면, 가격과 함께 표시되어 집니다. - 1년에 약 12달러로, 한달에 1달러로 Do..
해당 글은 전 '우아한형제들' 현 '인프런'의 개발자이신 jojoldu님의 블로그와 책(스프링 부트와 AWS로 혼자 구현하는 웹서비스)을 참고하여 작성하였습니다. 이전 글에서 서비스가 죽지 않고 배포가 가능한 무중단 배포를 구축하였습니다. 그러나, 아직까지 이전에 생성한 RDS DB를 연결하지 않았습니다. 이번 글에서는 AWS RDS DB를 연결하여, 운영 환경을 최종적으로 설정하도록 하겠습니다. 1. AWS RDS DB 접근하기 - 이전 글에서 운영 YAML (real-application.yml)을 EC2 서버에 생성하였습니다. - 운영 DB(AWS RDS)도 해당 파일에 추가하여 사용 가능하도록 하겠습니다. - 그렇지만, 해당 파일에는 현재 set1, set2 설정에 같은 내용을 반복하여 추가해야 ..
해당 글은 전 '우아한형제들' 현 '인프런'의 개발자이신 jojoldu님의 블로그와 책(스프링 부트와 AWS로 혼자 구현하는 웹서비스)을 참고하여 작성하였습니다. 이전 글에서 TravisCI & AWS CodeDeploy로 배포 자동화 구축하였습니다. 배포 자동화는 되었지만, 새로 배포하는 시간동안에는 서비스를 이용할 수 없습니다.(서버가 내려가있기 때문) 매번 배포 때마다, 서비스가 죽어 있을 순 없기 때문에, 서비스가 죽지 않고 배포가 가능한 무중단 배포를 구축하도록 하겠습니다. 1. 무중단 배포 - 서비스를 중지하지 않고, 배포를 계속하는 것을 무중단 배포라고 합니다. 무중단 배포 방식들 AWS의 Blue-Green 무중단 배포 도커를 이용한 무중단 배포 L4 스위치를 이용한 무중단 배포 Nginx..