일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 자바 orm
- 예외 처리
- 스프링부트
- spring boot
- 구글 로그인
- validation
- 관점 지향 프로그래밍
- @Valid
- ec2 nginx websocket reverse proxy
- fastapi
- spring websocket nginx 설정
- 이미지 업로드
- jwt
- 도메인 주도 개발
- session
- AWS
- S3
- CustomException
- 백준 10815 # 백준 Java
- OpenAI API
- 패러다임 불일치
- 개발 프로젝트
- springboot
- oauth2.0
- wss 연결 실패
- GoormIDE
- presigned url
- 소셜 로그인
- Flask
- logout
- Today
- Total
개발세발은 안되요
[스프링부트3개발자되기] Ch6 : 블로그 기획하고 API 만들기(1) 본문
6.1 사전 지식 : API 와 REST API
6.1.2 웹의 장점을 최대한 활용하는 REST API
API 는 클라이언트의 요청을 서버에 전달하고 서버의 결과물을 클라이언트에게 돌려주는 역할을 한다. REST API 란 자원을 이름으로 구분해 자원의 상태를 주고받는 API 방식이며, URL의 설계 방식의 한 종류이다. REST API를 사용할 때의 규칙은 다음과 같다.
1. URL에는 동사를 쓰지 않고 자원을 표시한다.
2. 동사는 HTTP 메서드로 해결한다.
REST API 의 특징
- 서버/클라이언트 구조
- 무상태
- 캐시 처리 가능
- 계층화
- 인터페이스 일관성
REST API의 장점
- URL만 보고도 무슨 행동을 하는 API인지 알 수 있다.
- 상태가 없기 때문에 클라이언트와 서버의 역할이 명확하게 분리된다.
REST API의 단점
- HTTP 메서드 방식의 개수에 제한이 있다.
- 설계를 하기 위해 공식적으로 제공되는 표준 규약이 없다.
REST API를 사용하는 방법은 다음과 같다.
규칙 1 : URL에는 동사를 쓰지 않고 자원을 표시해야 한다.
예를 들어 /articles/1 이라는 URL은 적합하지만, /articles/ahow/1 은 부적합하다.
규칙2 : 동사는 HTTP 메서드로 해결한다. 주로 사용하는 HTTP 메서드로는 POST, GET, PUT, DELETE 가 있다. 보통 이것들을 묶어서 CRUD라고도 한다. 이런 방식은 URL에 값을 입력하는 것이 아니라 내부적으로 처리하는 방식을 미리 정하는 것이다. 실제로 HTTP 메서드는 내부에서 서로 다른 함수로 처리한다.
예를 들어 GET/articles/1 은 id가 1인 블로그 글을 조회하는 API이다.
6.2 블로그 개발을 위한 엔티티 구성하기
@Builder
롬복에서 지원하는 애너테이션으로, 이 애너테이션을 생성자 위에 입력하면 빌더 패턴 방식으로 객체를 생성할 수 있다. 빌더 패턴을 사용하면 객체를 유연하고 직관적으로 생성할 수 있다. 빌더 패턴을 사용하면 어느 필드에 어느 값이 매칭되는지 바로 보이기 때문에 객체 생성 코드의 가독성이 높다.
// 빌더 패턴을 사용하지 않았을 때
new Article("abc", "def");
// 빌더 패턴을 사용했을 때
Article.builder()
.title("abc")
.content("def")
.build();
이 외에도 @Getter, @NoArgsConstructor 등의 애너테이션을 통해 코드를 반복해 입력하는 것을 막고 가독성을 높일 수 있다.
6.3 블로그 글 작성을 위한 API 구현하기
DTO(data tranfer object)는 계층끼리 데이터를 교환하기 위해 사용하는 객체이다. DAO는 데이터베이스와 연결되고 데이터를 조회하고 수정하는 데 사용하는 객체라 데이터 수정과 관련된 로직이 포함된다. 하지만 DAO는 단순하게 데이터를 옮기는 데에 사용되는 객체이기 때문에 별도의 비즈니스 로직을 포함하기 않는다.
HTTP 에서는 JSON을 사용하고 자바에서는 객체를 사용한다. 서로 형식이 다르기 때문에 형식에 맞게 변환하는 작업이 필요한데 이런 작업들을 직렬화, 역직렬화라고 한다.
직렬화
자바 시스템 내부에서 사용되는 객체를 외부에서 사용하도록 데이터를 변환하는 작업.
역직렬화
직렬화의 반대의 의미. 외부에서 사용하는 데이터를 자바의 객체 형태로 변환하는 작업. JSON 형식의 값을 자바 객체에 맞게 변환하는 것도 역직렬화이다.
'책 > 스프링부트3 개발자 되기: 자바편' 카테고리의 다른 글
[스프링부트3개발자되기] 08장 : 스프링 시큐리티로 로그인/로그아웃, 회원가입 구현하기 (1) | 2024.05.03 |
---|---|
[스프링부트3개발자되기] 06장 : 블로그 기획하고 API 만들기(2) (0) | 2024.04.05 |
[스프링부트3개발자되기] 05장 : 데이터베이스 조작이 편해지는 ORM (0) | 2024.03.22 |
[스프링부트3개발자되기] 04장: 스프링 부트 3과 테스트 (0) | 2024.03.21 |
[스프링부트3개발자되기] 03장 : 스프링 부트3 구조 이해하기 (0) | 2024.03.21 |