참고
🔎REST API란?
- 키워드 : 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미
- REST란?
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.
1강 REST API, 작업 1, 프로젝트 세팅, 로그인방식에 관계 없이 로그인 이후에 JWT 하나로 인증
2강 REST API, 작업 2, application yml 세팅, DB 생성, h2 의존성 추가
3강 REST API, REST API 주소체계
일반사이트 주소체계
- 게시물 목록 : GET http://localhost:8080/article/list
- 게시물 등록(폼) : GET http://localhost:8080/article/write
- 게시물 등록 : POST http://localhost:8080/article/write
- 게시물 단건 조회 : GET http://localhost:8080/article/1
- 게시물 수정(폼) : GET http://localhost:8080/article/1/modify
- 게시물 수정 : POST http://localhost:8080/article/1/modify
- 게시물 삭제 : GET http://localhost:8080/article/1/delete
REST API 주소체계
- 게시물 목록 : GET http://localhost:8080/articles
- 게시물 등록 : POST http://localhost:8080/articles
- 게시물 단건 조회 : GET http://localhost:8080/articles/1
- 게시물 수정 : PATCH http://localhost:8080/articles/1
- 게시물 삭제 : DELETE http://localhost:8080/articles/1
- 회원 목록 : GET http://localhost:8080/members
- 회원 로그인 : POST http://localhost:8080/member/login
- 현재 로그인한 회원의 정보 : GET http://localhost:8080/member/me
4강 REST API, REST API 구현은 타임리프 작업을 하지 않는 것 말고는 일반 사이트 만들기와 크게 차이가 없다
5강 REST API, 작업 3, 스프링 시큐리티 설정 끄기, member login test
6강 REST API, 작업 4, NotProd에 의해 앱 시작시 회원 2명 자동 생성
7강 REST API, 작업 5, 로그인을 시도했을 때 응답 헤더에 액세스 토큰 자리 추가
8강 REST API, 작업 6, JwtProvider에 의해 진짜 토큰이 만들어지도록
9강 REST API, 작업 7, 응답의 규격화
10강 REST API, 작업 8, RsData와 LoginResponse 클래스, 규격화 더 쉽게
11강 REST API, 작업 9, 헤더에 액세스 토큰 삭제, 응답 json을 정밀하게 테스트
12강 REST API, 작업 10, API Versioning
13강 REST API, 작업 11, member/me 추가, tests
14강 REST API, 작업 12, 엔티티 노출 되지 않도록 Dto 도입
@GetMapping(value = "/me", consumes = ALL_VALUE)
public RsData<MeResponse> me(@AuthenticationPrincipal User user) {
Member member = memberService.findByUsername(user.getName()).get();
return RsData.of("S-1", "성공", new MeResponse(member));
}
{
"resultCode": "S-1",
"msg": "성공",
"data": {
"member": {
"id": 1,
"createDate": "2024-10-31T14:37:16.474409",
"modifyDate": "2024-10-31T14:37:16.474409",
"username": "user1",
"email": "user1@test.com",
"authorities": [
{
"authority": "MEMBER"
}
]
}
}
}
1. 엔티티가 그대로 외부 API에 노출되면 안된다.
- 그렇기에 결국엔 이 작업(Dto 도입)이 필요해진다.
- 초반에는 DTO가 필요없다 -> 사용하지 않는다.
- 어느정도 방향성이 정해지면 외부에 API에서 바라는 요청
- 내부 개발용 -> 내 코드는 바꾸지 않기 위해
- ➡ 외부에서는 createDate지만, 내부 개발용에서는 regDate를 써도 된다. 한번 더 DTO로 감싸서 주기 때문에
15강 REST API, 작업 13, 인증, 인가 설정
16강 REST API, 매 요청마다 User 객체를 생성해서 스프링 시큐리티에 등록해야 한다.
17강 REST API, 작업 14, 헤더에 AccessToken이 있다면 자동 로그인
-
17강 강사님 git
-
17강 강의영상
-
아래 사진의 key에는 Authorization를 입력하고 value에는 Bearer 발급받은Token을 입력해주면 된다.

-
user1의 엑세스 토큰을 value 값에 넣었을 때의 Postman 요청결과
- 파란 박스는 user1의 엑세스 토큰이고 빨간박스는 요청결과!

-
user2의 엑세스 토큰을 value 값에 넣었을 때의 Postman 요청결과
- 파란 박스는 user2의 엑세스 토큰이고 빨간박스는 요청결과!

18강 REST API, 작업 15, 회원 검색 시 id 활용, 속도
19강 REST API, 작업 16, spring doc 추가
20강 REST API, 작업 17, 스웨거에서 액세스 토큰 설정할 수 있도록
21강 REST API, 작업 18, 게시글 리스트 추가
22강 REST API, 작업 19, 스프링 시큐리티, 자격 없는 요청에 대한 403 응답 양식 변경
23강 REST API, 작업 20, 다른 오류 커스터마이징