기능 | Method | URL | Request | Response |
---|---|---|---|---|
전체조회 | GET | /api/posts | - | { "id": 1, “username": " username ", “title": " title ", "content": " content ", “createat": "2022-12-08T22:48:21.999447", "modifiedat": "2022-12-08T22:48:21.999447" }, { "id": 2, “username": " username2", “title": " title2 ", "content": " content2 ", “createat": "2022-12-08T22:48:32.283841", "modifiedat": "2022-12-08T22:48:32. 283841" },…… |
조회 | GET | /api/post/{id} | - | { "id": 1, “username": " username ", “title": " title ", "content": " content ", “createat": "2022-12-08T22:48:21.999447", "modifiedat": "2022-12-08T22:48:21.999447" } |
작성 | POST | /api/post | (토큰 확인) { "title" : "title", "content", "conten" } | { "id": 1, “username": " username ", “title": " title ", "content": " content ", “createat": "2022-12-08T22:48:21.999447", "modifiedat": "2022-12-08T22:48:21.999447" } |
수정 | PUT | /api/post/{id} | (토큰 확인) { "title" : "title", "content", "conten" } | { "id": 1, “username": " username ", “title": " new title ", "content": " new content ", “createat": "2022-12-08T22:48:21.999447", "modifiedat": "2022-12-08T23:00:10.578877" } |
삭제 | DELETE | /api/post/{id} | (토큰 확인) | { statusCode: 200 message: “삭제가 완료되었습니다.” } |
기능 | Method | URL | Request | Response |
---|---|---|---|---|
회원가입 | POST | /api/user/signup | - USER { “username": " username ", "password": "password" } - ADMIN { “username": " username ", “admin": " true ", “adminToken": " 키값 ", "password": "password" } | { statusCode: 200 message: "회원가입에 성공하였습니다." } |
로그인 | POST | /api/user/login | - USER, ADMIN 동일 { “username": " username ", "password": "password" } | (토큰 발급) { statusCode: 200, message: "로그인이 완료되었습니다." } |
기능 | Method | URL | Request | Response |
---|---|---|---|---|
전체조회 | GET | /api/post/{postId}/comments | - | { "id": 1, “username": " username ", “title": " title ", "content": " content ", “createat": "2022-12-08T22:48:21.999447", "modifiedat": "2022-12-08T22:48:21.999447" }, { "id": 2, “username": " username2", “title": " title2 ", "content": " content2 ", “createat": "2022-12-08T22:48:32.283841", "modifiedat": "2022-12-08T22:48:32. 283841" },…… |
작성 | POST | /api/post/{postId}/comment | (토큰 확인) { "comment": "comment" } | { "postId": 1, "id": 1, “username": " username ", “comment": " comment ", “createat": "2022-12-08T22:48:21.999447", "modifiedat": "2022-12-08T22:48:21.999447" } |
수정 | PUT | /api/memo/{id} | (토큰 확인) { "comment": "comment" } | { "postId": 1, "id": 1, “username": " username ", “comment": " comment ", “createat": "2022-12-08T22:48:21.999447", "modifiedat": "2022-12-08T22:48:21.999447" } |
삭제 | DELETE | /api/memo/{id} | (토큰 확인) | { statusCode: 200 message: “삭제가 완료되었습니다.” } |
1. 수정, 삭제 API의 request를 어떤 방식으로 사용하셨나요?
- body
2. 어떤 상황에 어떤 방식의 request를 써야하나요?
- controller.java에서 입력 값 요청할 때
- service.java에서 요청 받은 걸 응답할 때
- blog.java에서 무엇을 입력 요청 할 것인지 사용
3. RESTful한 API를 설계했나요? 어떤 부분이 그런가요? 어떤 부분이 그렇지 않나요?
- 알맞는 메서드 사용 (GET, POST, PUT, DELETE)
4. 적절한 관심사 분리를 적용하였나요?
- Controller, Repository, Service 로 각각 구분함
5. API 명세서 작성 가이드라인을 검색하여 직접 작성한 API 명세서와 비교해보세요!
- 네
숙련
1. 처음 설계한 API 명세서에 변경사항이 있었나요?
변경 되었다면 어떤 점 때문 일까요? 첫 설계의 중요성에 대해 작성해 주세요!
- 네, 회원가입과 로그인으로 인해 바뀜, 우선순위를 정해서 작성해야 함
2. ERD를 먼저 설계한 후 Entity를 개발했을 때 어떤 점이 도움이 되셨나요?
- 개발 후 ERD를 설계하였습니다.
- 다음부터는 ERD 설계 먼저 해보도록 하겠습니다.
3. JWT를 사용하여 인증/인가를 구현 했을 때의 장점은 무엇일까요?
- 한번의 설정으로 편리함을 느낄 수 있음
4. 반대로 JWT를 사용한 인증/인가의 한계점은 무엇일까요?
- 한번 외부 공격 당하면 다 털린다(?)
5. 만약 댓글 기능이 있는 블로그에서 댓글이 달려있는 게시글을 삭제하려고 한다면 무슨 문제가 발생할까요?
Database 테이블 관점에서 해결방법이 무엇일까요?
- 작성자인지 아닌지 확인이 필요함
- 토큰 확인을 통해 작성자인 것을 확인 후 삭제 가능
6. IoC / DI 에 대해 간략하게 설명해 주세요!
- DI : 의존성 주입, 객체에 직접 NO!, 외부에서 생성 후 주입
- IOC : Bean 컨테이너, 제어권 컨테이너로 ~