스프링 개인과제

5w31892p·2022년 12월 9일
0

개인과제

목록 보기
1/1

과제 GitHub URL


:: 1. Use Case

:: 2. ERD 설계

:: 2. API 명세서

Blog API

기능MethodURLRequestResponse
전체조회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: “삭제가 완료되었습니다.”
}

User API

기능MethodURLRequestResponse
회원가입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: "로그인이 완료되었습니다."
}

Comment API

기능MethodURLRequestResponse
전체조회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 컨테이너, 제어권 컨테이너로 ~

0개의 댓글