Spring Projcect/날씨 일기 프로젝트 10

Chapter 10. API document 만들기 (API 문서화)

10.1 API(Application Interface) document API documentaion(API 문서화) 프론트 개발자에게 문서를 전하기 위해 필요하다. 백엔드 개발자끼리도 공유해야한다. API를 제공하는 웹 사이트는 보통 API document도 함께 제공한다. API 문서화 방식 txt 파일에 정리한다. => 가독성 떨어지고 변경 사항 추적이 어렵다. API 문서화 tool을 많이 이용한다. Swagger 서버로 요청되는 URL 리스트를 HTML 화면으로 문서화 및 테스트할 수 있는 라이브러리이다. API 문서를 만들면 하나의 URL로서 공유 가능하다. 다른 사람들이 URL을 통해 들어가서 API 호출 가능하다. ReDoc GitBook 10.2 Swagger 적용하기 (1) Ex) s..

Chanpter 09. 예외 처리하기

9.1 예외 처리란? Spring의 기본적인 예외처리 White level 페이지는 스프링이 기본적으로 해준는 예외 처리 중 하나이다. bad request Java지원 예외처리: try-catch custom exception을 만들어서 처리한다. Ex) Custom Exception 예외 상황을 위한 예외 클래스 InvalidDate를 만든다. RuntimeException를 상속 받는다. RuntimeException코드를 보면 아래과 같이 에러메시지를 매개변수로 줄 수 있다. public RuntimeException(String message) { super(message); } InvalidDate 클래스 아래와 같이 작성하면 InvalidDate가 호출될 때 메시지가 함께 반환된다. pack..

Chapter 08. 로그(log) 남기기

8.1 Spring Boot Logging 이란? log를 쓰는 이유 서비스 동작 상태 파악 장애 파악 System.out.print() => 출력 외에 부가 기능(오랜된 로그를 지우거나 로그를 파일에 저장하다거나 기능)이 없다. Logging library 사용 => 실무에서 많이 사용한다. ex) log4f => log4j2 logback: log4f보다 기능이 많다 log level(로그 레벨) Error: 즉시 조치를 취해야하는 심각한 경우에 발생한다. Warn: 로직 상 유효성을 확인할 때, 쓰인다. Info: 서비스를 운영하는데 중요한 작업이 끝나는 경우에 작성한다. Debug: 개발 단계에서 많이 사용하고 위의 레벨들이 실제 파일에 로그를 저장하고 남기도록 설정한다. Trace: 개발 단계에..

Chapter 07. 날씨 저장 스케쥴링

7.1 매일 자정에 날씨 데이터 불러오기 캐싱(Caching)이란? 캐싱은 캐시(cache)라는 빠른 메모리 영역으로 데이터를 가져와서 접근하는 방식을 말한다. 데이터 등을 미리 복사해서 저장해두는 것을 말한다. 요청을 빠르게 처리한다. 캐시 방식 웹 브라우저에서 캐시 - ex) 크롬에서 네이버 화면에 쓰일 데이터를 가져온다. 사이트에 재접속할 때는 기존의 화면에서 바뀐 부분만을 데이터를 가져오므로 로딩이 빠르다. 서버에서 캐시 Client: 모바일 앱, 웹 한번 들어갔던 사이트 정보를 컨트롤러에서 저장해뒀다가 재접속하는 경우에 복사해둔 내용을 보여준다. 속도도 빨라지고 서버의 부하도 줄어든다. 캐싱할 때 유의사항 요청한 것에 대해 응답이 변하지 않는 경우에만 사용 가능하다. 캐시 적용 전 openwea..

Chapter 06. Spring Transaction(스프링 트랜잭션)

6.1 트랜잭션(Transaction)이란? Transaction(트랜잭션) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위를 '트랜잭션'이라고 한다. ex) 오늘의 날씨 데이터를 가져와서 일기 정보를 DB에 저장하기까지의 작업 단위를 트랜잭션이라고 볼 수 있다. 트랜잭션의 속성 원자성(Atomicity) - 트랜잭션이 데이터베이스에 모두 반영되거나 또는 반영되지 않거나 반드시 둘 중 하나여야만 하다. 일관성(Consistency) - 트랜잭션의 작업 처리 결과는 언제나 일관적이어야한다. 독립성(Isolation) - 여러 트랜잭션들이 독립적으로 수행되어야 한다. 지속성(Durablity) - 트랜잭션이 성공적으로 완료된 경우 변화된 상태가 지속적으로 반영되어야한다. 트랜잭션의 연산 - 원자성 ..

Chapter 05. 날씨 데이터 CRUD

5.1 날씨 조회 API 작성 Ex) 조회 - Read repository에 함수 만들기 List findAllByDate(LocalDate date); service public List readDiary(LocalDate date) { return diaryRepository.findAllByDate(date); } Controller - GetMapping @GetMapping("/read/diary") List readDiary(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date){ return diaryService.readDiary(date); } Note) 실행 결과 - GET send Ex) 날짜 범위를 정..

Chapter 04. 날씨 데이터 저장하기

4.1 openweathermap 데이터 확인 API key란 무엇인가? Aithentication(인증): API를 호출하는 대상을 확인하는 절차를 API 인증이라고 한다. API key 방식 API Token방식 API key: 특정 사용자만 알 수 있는 문자열을 말한다. API 제공처로부터 key를 발급 받도 API 호출 시에 key를 메시지 안에 넣어서 호출한다. openweathermap 서버는 메시지 안에서 key를 읽어서 누가 호출한 API인지 인증한다. API key를 이용해서 날씨 정보 불러오기 https://openweathermap.org/ Сurrent weather and forecast - OpenWeatherMap Access current weather data for any..

Chapter 03. DB에 작업하기

3.1 ORM 개념 이해하기 Persistence Framework란? persistance: 영속성 데이터의 영속성: 휴대폰을 새로 구매해도 기존에 있던 데이터를 끌어올 수 있는 것처럼 데이터가 없어지지 않는 특성을 말한다. Persistance Framework는 DB와의 연동되는 시스템을 빠르게 개발하고 안정적인 구동을 보장해주는 프레임워크를 말한다. 장점: 재사용, 유지 보수에 용이하다. 코드가 직관적이다. 종류 SQL Mapper: SQL을 개발자가 직접 작성한다. 매핑: 쿼리 수행 결과 객체 단점: DB 종류 변경 시에 쿼리 수정해야한다. 비슷한 쿼리를 반복적으로 작성해야한다. ORM(Object Relation Mapping): Object와 DB 테이블을 매핑한다. Java 함수를 사용하면..

Chapter 02. 프로젝트 준비하기

2.1 Spring Initializer Spring Boot 프로젝트 생성하기 start.spring.io 이클립스 / 인텔리제이 빌드 관리 도구 - 라이브러리 관리, 빌드 및 실행 Maven Project: Gradle Project: Spring Initializer 그룹: 회사 이름 개인: 블로그 도메인명을 쓰기도 한다. Artifact: 프로젝트 이름 Jar(Java Archive - 백엔드 서버만 만드는 경우 적합) vs War(Web Archive - 웹 어플리케이션 관련 내용 추가) LTS(Long Term Service): 8, 11, 17만 해당된다. lombok, Spring Web(API 서버를 만드려면 필수) 디펜던시 추가 2.2 프로젝트 구동 시키기 - build.gradle을 ..

Chapter 01. 프로젝트 진행 전 준비 사항

1.1 주제 JPA: 데이터를 가져와서 저장하는 방식 1.2 날씨 데이터 고르기 후보 1) 네이버에 날씨를 검색해서 검색 결과 크롤링 해오기 - By 기상청 2) 기상청에서 데이터를 얻어올 수 있을까? -> Open API를 통해 공공데이터를 제공한다. -> 공공데이터 포털에는 다양한 데이터가 있다. ex) 세금 관련, 날씨 관련, 코로나 관련한 데이터 등 다양하다. -> 그런데, 기상청은 국내에 한정된 날씨 데이터만 제공한다. 3) OpenWeatherMap API: 세계의 날씨 API