여러 대의 컴퓨터 또는 장비가 서로 연결되어 정보를 주고받을 수 있도록 하는 기술이다.
서버에 요청을 보내는 프로그램
예: 웹 브라우저
클라이언트의 요청을 받아 처리하는 주체
우리가 웹 브라우저에 주소를 입력하는 것은 새로운 화면을 그리기 위한 데이터를 요청하는 것에 해당한다.
컴퓨터를 식별하기 위한 위치 주소
예: 서울시 00구
하나의 서버에서 실행되고 있는 여러 서비스를 구분하기 위한 번호
예: 홍길동의 집에서 특정 방을 찾아가는 것처럼, 서버 내에서 어떤 서비스로 요청을 전달할지 구분
인터넷을 통해 HTTP를 이용하여 클라이언트의 요청을 받고 응답하는 통신을 수행하는 서버
다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙
쉽게 말하면 서로 다른 프로그램이 통신하기 위한 약속이다.
자원을 이름으로 구분하고 해당 자원의 상태를 주고받는 방식
API가 HTTP의 규칙을 적절하게 사용하고, 자원을 중심으로 잘 설계되어 있다면 RESTful하게 설계되었다고 볼 수 있다.
| Method | 역할 |
|---|---|
| GET | 데이터 조회 |
| POST | 데이터 생성 |
| PUT | 데이터 수정 |
| DELETE | 데이터 삭제 |
브라우저에서 URL을 입력하여 페이지를 요청했을 때 HTTP 요청을 받아 HTML과 같은 정적인 콘텐츠를 사용자에게 전달하는 역할을 한다.
정적 콘텐츠 처리
동적 콘텐츠 요청 전달
웹 애플리케이션의 실제 기능이 동작하는 서버
동적인 콘텐츠를 처리할 수 있다는 점에서 Web Server와 구별된다.
예: Apache, Nginx
Spring Framework는 초기 설정을 위해 많은 XML 설정이 필요했다.
이러한 설정을 보다 편리하게 할 수 있도록 Spring Boot가 등장했다.
@ 애너테이션 기반 설정데이터를 주고받는 형식을 정의한 통신 규약 중 하나
| 상태 코드 | 의미 |
|---|---|
| 2xx | Successful |
| 3xx | Redirection |
| 4xx | Client Error |
| 5xx | Server Error |
요청이나 응답에 대한 추가 데이터 및 메타데이터
예:
GET naver.com HTTP/1.1
HTTP 요청 또는 응답에서 전달되는 실제 데이터
GET을 제외한 HTTP Method에서는 Payload를 사용할 수 있음
Java 프로그래밍 언어를 위한 단위 테스트 프레임워크
Ctrl + Shift + T⌘ + Shift + TJava 프로젝트에서 반복적으로 작성해야 하는 메서드나 생성자 등을 자동으로 생성해 코드 작성량을 줄여주는 라이브러리
@Getter, @SetterGetter와 Setter를 자동으로 생성한다.
@Getter
@Setter
public class Memo {
private String username;
private String contents;
}
위 코드는 아래와 같은 Getter와 Setter를 직접 작성하는 것과 같은 역할을 한다.
public String getUsername() {
return this.username;
}
public String getContents() {
return this.contents;
}
public void setUsername(String username) {
this.username = username;
}
public void setContents(String contents) {
this.contents = contents;
}
@AllArgsConstructor, @NoArgsConstructor모든 필드를 사용하는 생성자와 기본 생성자를 자동으로 생성한다.
@NoArgsConstructor
@AllArgsConstructor
public class Memo {
private String username;
private String contents;
}
@NoArgsConstructor는 기본 생성자를 생성한다.
public Memo() {
}
@AllArgsConstructor는 모든 필드를 매개변수로 받는 생성자를 생성한다.
public Memo(String username, String contents) {
this.username = username;
this.contents = contents;
}
@RequiredArgsConstructorfinal 또는 @NonNull이 붙은 필드를 매개변수로 받는 생성자를 자동으로 생성한다.
@RequiredArgsConstructor
public class Memo {
private final Calculator calculator;
private final String username;
private String contents;
}
위 코드는 다음과 같은 생성자를 자동으로 생성한다.
public Memo(Calculator calculator, String username) {
this.calculator = calculator;
this.username = username;
}
Spring Boot와 관련된 설정을 작성하는 파일이다.
server.port=8081
위와 같이 설정하면 서버의 포트 번호가 8081로 변경된다.