โณ๏ธ ๊ธ CRUD ๊ตฌํ
๐ ๊ธ ์ ์ฅํ๊ธฐ
1๏ธโฃ ์กฐ๊ฑด ํ์ธ
โณ๏ธ API : GET /post/write
โ๏ธ ํผ ์ ๋ ฅ โ subject โก content โข keywords (์ ๋ ฅ์์ : #์๋ฐ #์คํ๋ง๋ถํธ #์คํ๋ง๋ฐฐ์น)
โณ๏ธ ์๊ตฌ์ฌํญ
โ๏ธ ๋งํฌ๋ค์ด ์๋ฌธ๊ณผ ๋ ๋๋ง ๊ฒฐ๊ณผ(HTML)๊น์ง ๊ฐ์ด ์ ์ฅํ๋ค.
โ๏ธ ๊ธ ์์ฑ์ ํ ์คํธ์๋ํฐ ์ฌ์ฉํ๋ค.
โ๏ธ ๊ธ์ ์ต์ 1000์ ์ด์์ ํ ์คํธ๊ฐ ์กด์ฌํด์ผ ๋ฐํ์ด ๊ฐ๋ฅํ๋ค.
โ๏ธ ์ด๋ฏธ์ง๋ง ์๋ ๊ธ์ ๋ฐํํ ์ ์๋ค.
2๏ธโฃ ๊ธฐ๋ณธ ๊ตฌํ (์)
but ์์ง ํค์๋ ๊ด๋ จ ๋ถ๋ถ๋ค๊ณผ ํ ์คํธ ์๋ํฐ ์ ์ฉ ๋ถ๋ถ๋ค์ ํด๊ฒฐํ์ง ๋ชปํ๋ค.
3๏ธโฃ Dto ์ ์ฉ _ RequestPostDto
โ PostDto class ์์ฑ ํ RequestPostDto ๋ด๋ถ ํด๋์ค ์์ฑ
// RequestPostDto ๊ตฌ์ฑ
@Getter
@Setter
public static class RequestPostDto { // Post ์์ฑ ํผ์ ๋ฐ๊ธฐ์ํ DTO
private String subject;
private String content;
public RequestPostDto (String subject, String content) {
this.subject = subject;
this.content = content;
}
}
โก๏ธ ๊ณ ๋ฏผ์ค์ธ ๋ถ๋ถ : Controller ์ Mapping ์ ์ ํด๋์๋๋ฐ, Service ์์ ๊ฒฐ๊ตญ ์ ์ฒด ์กฐ๋ฆฝ ํ์ (์๋ ์ฝ๋)
public void writePost(RequestPostDto requestPostDto) {
Post post = new Post();
post.setSubject(requestPostDto.getSubject());
post.setContent(requestPostDto.getContent());
post.setCreatedDate(LocalDateTime.now());
post.setUpdatedDate(LocalDateTime.now());
postRepository.save(post);
}
โก๏ธ 1์ฐจ ํด๊ฒฐ : Post Entity ์ ์์ฑ์ ์์ฑ, but ์ถ๊ฐ๋ก ์์ฑ๋ ์ปฌ๋ผ๋ค์ด ์์ด์ ๊ทธ๋๋ ์ด๋ป๊ฒ ๋ ์ง ๋ชจ๋ฅด๊ฒ ์.
public Post (String subject, String content) {
super(); // ์์๋ฐ์ BaseEntity ์ ์์ฑ์ ํธ์ถ
this.subject = subject;
this.content = content;
}
// ๊ฐ์ ๋ Service ์ writePost ํจ์
public void writePost(RequestPostDto requestPostDto) {
Post post = new Post(requestPostDto.getSubject(), requestPostDto.getContent());
postRepository.save(post);
}
4๏ธโฃ ํ ์คํธ ์๋ํฐ ์ ์ฉ
โ ๋งค๋ฒ ๋ชจ๋ html ํ์ผ์ ๋ชจ๋ ์ค์ ์ ์ฃผ์ ํ๋๊ฒ์ ๋ฒ๊ฑฐ๋ก์์ผ๋ก layout ์ ์ฉ (๋์์ header, footer ๋ ์ถ๊ฐ)

๐ ๊ธ ๋ฆฌ์คํธ
1๏ธโฃ ์กฐ๊ฑด ํ์ธ
โณ๏ธ API : GET /post/list
โ๏ธ ๊ธ ๋ฆฌ์คํธ, ์ ์ฒด ๋ ธ์ถ
โ๏ธ ๋ฆฌ์คํธ ์์ดํ ๊ตฌ์ฑ์์ : ๋ฒํธ, ์ ๋ชฉ, ์์ฑ์, ์์ฑ๋ ์ง, ์์ ๋ ์ง
โ๏ธ ํ์ด์ง ์์
โก๏ธ ์์ง ํ์ ์ ์ฉ ์ ์ด๋ฏ๋ก ์์ฑ์ ์ ์ธ ๋๋จธ์ง ๋ฆฌ์คํ
โณ๏ธ ์๊ตฌ์ฌํญ
โ๏ธ ์ ๋ชฉ๊ณผ ๊ธ์ ํด์ํ๊ทธ๋ค์ ๋ณผ ์ ์๋ค.
โ๏ธ ํด์ํ๊ทธ๋ฅผ ํด๋ฆญํ๋ฉด ๋ด๊ฐ ์์ฑํ ๊ธ ์ค ํด๋น ํด์ํ๊ทธ์ ๊ด๋ จ๋ ๊ธ๋ค์ ๋ณผ ์ ์๋ค.
2๏ธโฃ ๊ธฐ๋ณธ ๊ตฌํ

๐ ๊ธ ์์ธ
1๏ธโฃ ์กฐ๊ฑด ํ์ธ
โณ๏ธ API : GET /post/{id}
โ๏ธ ๋ฒํธ, ์ ๋ชฉ, ์์ฑ์, ์์ฑ๋ ์ง, ์์ ๋ ์ง, ๋ด์ฉ
โ๏ธ ํด์ํ๊ทธ
โณ๏ธ ์๊ตฌ์ฌํญ
โ๏ธ ๊ธ์ ์ ๋ชฉ, ๋ด์ฉ, ํด์ํ๊ทธ๋ฅผ ๋ชจ๋ ์ถ๋ ฅ
โ๏ธ ๊ธ์ ๋ด์ฉ์ ๋งํฌ๋ค์ด ํด์์ด ๋์ด์ผ ํ๋ค.
2๏ธโฃ ๊ธฐ๋ณธ ๊ตฌํ

3๏ธโฃ Dto ์ ์ฉ _ ResponsetPostDto
๐ ๊ธ ์ญ์
1๏ธโฃ ์กฐ๊ฑด ํ์ธ
โณ๏ธ API : GET /post/{id}/delete
โณ๏ธ ์๊ตฌ์ฌํญ
โ๏ธ ๊ธ์ด ์ญ์ ๋๋ฉด ๊ธ ๋ฆฌ์คํธ๋ก ๋ฆฌ๋ค์ด๋ ํธ ํ๋ค.
โ๏ธ ์ญ์ ๋ฒํผ ๋๋ ์ ๋ confirm ์ฐฝ์ผ๋ก ์ญ์ ์ฌ๋ถ๋ฅผ ํ ๋ฒ ๋ ๋ฌผ์ด๋ณธ๋ค.
2๏ธโฃ ๊ธฐ๋ณธ ๊ตฌํ

3๏ธโฃ ์ญ์ ๋ฒํผ ๋๋ ์ ๋ confirm ์ฐฝ์ผ๋ก ์ญ์ ์ฌ๋ถ ํ์ธ
<a th:href="@{|/post/${post.id}/delete|}" onclick="return confirm('์ ๋ง๋ก ์ญ์ ํ ๊น์?');" class="btn btn-danger" th:text="์ญ์ "></a>

๐ ๊ธ ์์
1๏ธโฃ ์กฐ๊ฑด ํ์ธ
โณ๏ธ API : GET /post/{id}/modify
โ๏ธ ํผ ์ ๋ ฅ โ subject โก content โข keywords (์ ๋ ฅ์์ : #์๋ฐ #์คํ๋ง๋ถํธ #์คํ๋ง๋ฐฐ์น)
โณ๏ธ API : POST /post/{id}/modify
โณ๏ธ ์๊ตฌ์ฌํญ
โ๏ธ ๋งํฌ๋ค์ด ์๋ฌธ๊ณผ ๋ ๋๋ง ๊ฒฐ๊ณผ(HTML)๊น์ง ๊ฐ์ด ์ ์ฅํ๋ค.
2๏ธโฃ ๊ธฐ๋ณธ ๊ตฌํ

'LikeLion_Final_Project ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [2์ฃผ์ฐจ] Mission ํด๊ฒฐ ์ผ์ง (2) (0) | 2022.10.26 |
|---|---|
| [2์ฃผ์ฐจ] Mission ํด๊ฒฐ ์ผ์ง (1) (1) | 2022.10.25 |
| [1์ฃผ์ฐจ] ํผ์ด ๋ฆฌ๋ทฐ ์ผ์ง (0) | 2022.10.20 |
| [0์ฃผ์ฐจ] ํ๋ก์ ํธ ๊ฐ์ (0) | 2022.10.17 |