1. REST API Representational State Transfer 웹의 장점을 최대한 활용하는 API 자원을 이름으로 구분해 자원의 상태를 주고받는 API 방식 URL의 설계 방식 REST API의 장점 URL만 보고도 무슨 행동을 하는 API인지 명확하게 알 수 있음 상태가 없다는 특징이 있어서 클라이언트와 서버의 역할이 명확하게 분리 HTTP 표준을 사용하는 모든 플랫폼에서 사용할 수 있음 REST API의 단점 GET, POST와 같은 방식의 개수에 제한이 있고, 설계를 위해 공식적으로 제공되는 표준 규약이 없음 REST API 사용방법 1. URL에는 동사X, 자원 표시 자원 = 가져오는 데이터 ex) 학생 중 id가 1인 학생 정보를 가져오는 URL /students/1 /artic..
DBMS DataBase Management System 많은 사람이 공유할 수 있어야 하므로 동시 접근 할 수 있어야 함. RDBMS Relational DBMS 관계형이라는 말을 쓰는 이유는 이 DBMS가 관계형 모델을 기반으로 하기 때문 테이블 형태로 이루어진 데이터 저장소 H2 DB H2는 자바로 작성되어 있는 RDBMS 스프링 부트가 지원하는 인메모리 관계형 데이터베이스 애플리케이션 자체 내부에 데이터를 저장하는 특징 그래서 애플리케이션을 다시 실행하면 데이터는 초기화 됨 개발 시 테스트 용도로 많이 사용 ORM이란? Object-Relational Mapping 자바의 객체와 DB를 연결하는 프로그래밍 기법 자바 언어로만 데이터베이스를 다룰 수 있음 ORM 장점 SQL을 직접 작성하지 않고 사..
테스트 테스트 코드는 작성한 코드가 의도대로 잘 동작하고 예상치 못한 문제가 없는지 확인할 목적으로 작성하는 코드 test 디렉터리에서 작업 given(테스트 실행 준비) - when(테스트 진행) - then(테스트 결과 검증) 단계로 진행 JUnit 자바 언어를 위한 단위 테스트 프레임워크 단위테스트란? 작성한 코드가 의도대로 작동하는지 작은 단위로 검증하는 것 JUnit 특징 @Test 애너테이션으로 메서드를 호출할 때마다 새 인스턴스를 생성, 독립 테스트 가능 예상 결과를 검증하는 assertion method 제공 사용 방법 단순, 테스트 코드 작성 시간 적음 자동 실행, 자체 결과를 확인하고 즉각적인 피드백 제공 JUnit으로 단위 테스트 코드 만들기 1. test 디렉터리에 JUnitTest..
스프링 부트3 구조 각 계층이 양 옆의 계층과 통신하는 구조 계층이란? 역할과 책임이 있는 어떤 소프트웨어의 구성 요소 각 계층은 서로 소통할 수 있지만 다른 계층에 직접 영향XXX 프레젠테이션 계층 HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할 컨트롤러가 프레젠테이션 계층의 역할 컨트롤러는 스프링부트 내에 여러 개 있을 수 있다 비즈니스 계층 모든 비즈니스 로직 처리(서비스를 만들기 위한 로직) 프로세스를 구현하기 위한 로직 서비스가 비즈니스 계층의 역할 퍼시스턴스 계층 모든 데이터베이스 관련 로직 처리 리포지토리가 퍼시스턴스 계층의 역할 => 계층은 개념의 영역이고 컨트롤러, 서비스, 리포지토리는 실제 구현을 위한 영역 메인 디렉토리 구성 스프링 부트 요청-응답 과정 한 방에 이해 ..
1. 스프링과 스프링 부트 1-1. 스프링이란? 엔터프라이즈 애플리케이션(대규모의 복잡한 데이터를 관리하는 애플리케이션)은 서버 성능과 안정성, 보안이 매우 중요 스프링 프레임워크는 서버 성능, 안정성, 보안을 매우 높은 수준으로 제공하는 도구(엔터프라이즈 애플리케이션을 위한 개발 환경 제공) 이렇게 함으로써 개발자들은 기능 개발에 집중할 수 있게 됨. 1-2. 스프링 부트란? 스프링은 장점이 많은 개발 도구지만 설정이 매우 복잡하다는 단점이 있는데, 이 단점을 보완하고자 출시 스프링 부트는 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어주는 도구 즉, 스프링 부트는 스프링에 속한 도구 WAS(web application server) 내장 ex) 톰캣, 제티, 언더토우 1-3. 스프링과 스..
문제 간단한 예제를 실행시키려고 하는데 이런 오류가 떴다. *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class 원인 프로젝트와 연결된 DB가 없어서 생긴 문제이다. 해결 1) yml 파일에 DB를 연결하거나 2) Application 파일에 코드를 추가하여 DB 없이 실행시킨다. 나는 간단한..
클라이언트(client) 서버로 요청하는 프로그램 웹브라우저에서 주소를 입력한 뒤 enter를 눌러 정보를 요청하는 행위를 '서버에 요청한다' 그러면 서버는 그 주소에 맞는 화면으로 응답 서버(server) 클라이언트의 요청을 받아 처리하는 주체 데이터베이스 데이터 저장소 흔히 데이터베이스를 말할 때 MySQL, 오라클 등을 이야기 하는데 이것은 엄밀히 말하면 데이터베이스가 아니라 데이터베이스를 관리하기 위한 시스템의 이름 클라이언트에서 SQL(데이터베이스를 조작하기 위한 언어)로 데이터베이스 관리 시스템에 데이터를 요청하면 데이터베이스 관리 시스템은 데이터베이스에서 데이터를 꺼내 응답 RDB(Relational Database) 데이터베이스는 RDB, NoSQL, NewSQL 등 여러 종류가 있음 가장..
프로젝트를 하던 중 zipCode 우편번호를 받으면 위도, 경도를 반환해주는 api를 짜고 싶어서 Google의 Geocoding API로 해봤다. 구글링을 해도 최신 글이 없어서 삽질하다가 성공해서 이렇게 정리하는 중이다!! https://console.cloud.google.com/ Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 1. 이 링크에 들어가서 api를 생성한다. 이때 주의할 점은 구글 계정에 카드가 연결되어있어야한다. 그리고 활성화까지 해줘야 함!! 90일간은 무료로 사용할 수 있다고 한다. 2. 발급 받은 api key를 application.yml에 추가한다. google: maps: api: key: 발급 받은 key 값 ..
https://dkan9634.tistory.com/174 [AWS] EC2 인스턴스 제대로 생성하기 AWS 프리티어 계정을 만들고 인스턴스 생성할 때 제대로 안해서 연결이 안됐었다... 1. 프리티어 계정을 만든다. 2. 홈에서 인스턴스 시작을 누른다. 3. 애플리케이션 및 OS 이미지에서 Ubuntu를 선택 dkan9634.tistory.com 1편에 이어서 2편! 서버 공부를 하면서 탄력적 IP와 연결을 했었는데 아주 소액이지만 돈이 나갔다.. 이 부분에서 과금되는 분들이 많은 걸로 알고 있는데 이 글을 보고 다들 돈 아끼셨음 좋겠다! 탄력적 IP 할당 1. 네트워크 및 보안 > 탄력적 IP에 들어간다. 2. '탄력적 IP 주소 할당'을 눌러준다. 3. '이 탄력적 IP 주소 연결'을 눌러준다. 4..
AWS 프리티어 계정을 만들고 인스턴스 생성할 때 제대로 안해서 연결이 안됐었다... 1. 프리티어 계정을 만든다. 2. 홈에서 인스턴스 시작을 누른다. 3. 애플리케이션 및 OS 이미지에서 Ubuntu를 선택해준다. 버전은 20.04로 했다. 선택할 때 오른쪽에 보면 '프리 티어 사용 가능'이라고 써있는 걸 눌러야 과금이 안된다. => 난 프로젝트 할 때, Ubuntu를 써야하는데 여기서 AMI를 선택해서 인스턴스를 아예 지우고 다시 생성했다...... 4. 인스턴스 유형은 t2.micro로 했다. 3번과 마찬가지로 '프리 티어 사용 가능'이라고 써있는 걸 눌러야 과금이 안된다. 5. 키 페어를 생성한다. 이때 다운로드 받은 파일은 다시 다운로드 할 수 없기 때문에 잘 저장해둬야한다. 5. 인스턴스 시..