기록을 안 하니 복습과 정리가 어려워서 작성하는 뼈대글...😥
- 테스트 코드 관련: 실전 코틀린과 스프링 부트로 도서 관리 애플리케이션 개발하기의 2강. 테스트 코드는 무엇인가 참고
section1 생애 최초 API 만들기
🍭java를 공부하기 전에 알아두면 좋은 것들
(JVM, JDK, 빌드, 빌드툴)
🟩 중간정리 #1
- 컴파일: 인간이 이해하기 쉬운 언어를 기계어로 번역하는 과정
- 컴파일러: 컴파일을 하는 프로그램
- 바이트 코드: 0과 1로 이루어진 코드, 컴퓨터가 이해할 수 있다.
🟩 중간정리 #2
원래는 OS 마다 다른 컴파일러가 필요하지만
JAVA는 JVM이 0과 1을 OS 맞게 번역해준다.
- 자바는 좀 특별하다. 운영체제와 상관없이 똑같은 결과
🟩 중간정리 #3
- JAVA의 버전 = JDK의 버전
JVM | JRE | JDK |
---|
자바 가상 머신의 약자(Java Virtual Machine) | 자바 실행 환경의 약자(Java Runtime Environment) | 자바 개발 도구의 약자(Java Development Kit) |
OS 별로 존재 | JRE = JVM + 자바 프로그램, 실행에 필요한 라이브러리 파일 등 | JDK = JRE + 개발을 위한 도구 |
바이터리 코드를 읽고 검증하고 실행 | JVM 실행 환경 구현 | 컴파일러, 디버그 도구 등 포함 |
- LTS(Long Time Support): 오래 쓸 수 있는 버전
🟩 중간정리 #4
자바의 종류(참고: https://engineering.linecorp.com/ko/blog/line-open-jdk)
- Oracle JDK: 오라클이 만든 JDK, 개인에게는 무료. 기업용은 유료
- Open JDK: Oracle JDK와 비슷한 성능, 언제나 무료.
빌드와 실행
- 빌드(build)
소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 SW 가공물로 변환시키는 과정
- Artifact: 독립 SW 가공물
- 빌드 세분화
- 소스 코드 컴파일
- 테스트 코드 컴파일
- 테스트 코드: 내가 작성한 코드를 자동 테스트 해주는 코드를 추가로 작성한 것. 테스트 코드 여부에 따라 개발 속도 및 안정성, 품절이 달라질 수 있다.
- 테스트 코드 실행
- 테스트 코드 리포트 작성
- 기타 추가 설정한 작업들을 진행
- 패키징 수행
- 패키징: 다른 사람이 만들어 놓은 오픈 소스들을 내가 사용한 코드와 하나로 묶음
- 최종 SW 결과물을 만듦
- 실행(RUN)
내가 작성한 코드(혹은 테스트 코드)를 컴파일을 거쳐 작동시켜 보는 것.
Artifact가 나올 수도 있고, 나오지 않을 수도 있다.
JAVA의 빌드 툴
- 빌드 툴(build tool)
- 소스 코드의 빌드 과정을 자동으로 처리해주는 프로그램
- 외부 소스 코드(외부 라이브러리) 자동 추가, 관리
- 종류
- Ant
- 설정을 위해 xml 사용
- 간단하고 사용하기 귀움
- 복잡한 처리를 하려면 빌드 스크립트가 장황해져 관리가 어렵다
- 외부 라이브러리를 관리하는 구조가 없다.
- 지금은 안 써요.
- Maven
- 설정을 위해 xml 사용
- 외부 라이브러리 관리 가능
- 장황한 빌드 스크립트 문제 해결
- 특정 경우에 xml이 복잡해짐
- xml 자체의 한계
- 지금도 쓰는 경우가 있으나 신규 프로젝트에는 안 쓰는 편...
- Gradle
- 설정을 위해 groovy 언어 사용
- 외부 라이브러리 관리 가능
- 유연하게 빌드 스크립트를 작성할 수 있다.
- 성능이 뛰어나다
- 최신
🍭1강 스프링 프로젝트를 시작하는 두 번째 방법
새로운 프로젝트 시작하기
https://start.spring.io/
- 의존성(Dependencies): 프로젝트에서 사용하는 라이브러리/프레임워크
- 라이브러리: 프로그래밍을 개발할 때 미리 만들어져 있는 기능을 가져다 사용하는 것
- 프레임워크: 프로그래밍을 개발할 때 미리 만들어져 있는 구조에 코드를 가져다 끼워 넣는 것
🍭2강 SpringBootApplication과 서버
서버란 무엇인가?
- server = 기능을 제공하는 것(회원가입, 정보 가져오기, 추천 기능)
- 어떠한 기능을 제공하는 프로그램, 그 프로그램을 실행시키고 있는 컴퓨터
- 누군가의 요청이 있어야 한다.
🍭3강 네트워크란 무엇인가?
- DNS(Domain Name System)
- 도메인 이름 (외우기 좋게) = IP
- port : 컴퓨터 내 사용하는 프로그램
🍭4강 HTTP와 API란 무엇인가?
- HTTP(HyperText Transfer Protocol)
- 행위(HTTP Method)/컴퓨터에게 원하는 자원(Path)?(구분기호)자원의 세부 조건(Query) = 상태코드
Host:컴퓨터:프로그램 정보 = 헤더
= 한 줄 띄기
(Body) = body
- HTTP Method
- GET: 데이터를 달라 + query
- POST: 데이터를 저장하라 + body
- PUT: 데이터를 수정하라 + body
- DELETE: 데이터를 삭제해라 + query
- API(Application Programming Interface): 정해진 약속을 하여, 특정 기능을 수행하는 것
- URL(Uniform Resource Location)
- HTTP 응답
- 클라이언트(요청을 한 컴퓨터) - 서버(요청에 대한 응답을 제공한 컴퓨터) 구조
- 상태코드가 핵심이다.
200 OK
300 Moved Permanently
404 NotFound
500 Internal Server Error
🍭5강 GET API 개발하고 테스트하기
intellij 단축키 (windows)
🍭6강 POST API 개발하고 테스트하기
- JSON이란?
객체 표기법, 즉 무언가를 표현하기 위한 형식
- 한 controller class에 여러 API를 추가할 수 있다.
🍭7강 유저 생성 API 개발
🍭8강 유저 조회 API 개발과 테스트
- HTTP Method: GET
- HTTP Path: /user
- 쿼리: 없음
- 결과 반환
id : long(list에 담겨 있는 유저의 순서)
name : String(null 불가능)
age : Integer
🟩 7,8강 http://localhost:8080/v1/index.html Error인 경우,
(참고:
https://www.inflearn.com/questions/827529/7%EA%B0%95-%EC%A3%BC%EC%86%8C-%ED%8E%98%EC%9D%B4%EC%A7%80-whitelabel-error-page)
스프링 프로젝트를 시작하는 두 번째 방법으로 하고 있어서였다.
resources만 복붙하니 해결.
🍭9강 Section1 정리
- 스프링 프로젝트를 시작하는 방법과 실행하는 방법
- 네트워크, IP, 도메인, 포트, HTTP 요청과 응답 구조, 클라이언트-서버 구조, API 등 기반지식
- Spring Boot를 이용해 GET API와 POST API를 만드는 방법
이번에 우리가 만든 API의 문제점: 서버를 다시 켜니까 사용자 정보가 사라짐.(유저 정보는 메모리에서만 유지되고 있음)