https://bcho.tistory.com/807 REST API์ ๋ํ ๋ณด์ REST API ๋ณด์ ์กฐ๋ํ REST API์ ๋ํ ๋ณด์์ ๋ํด์ ์์๋ณด์. API ์ ๋ํ ๋ณด์์ ์ธ์ฆ, ๋ฉ์ธ์ง ์ํธํ, ๋ฌด๊ฒฐ์ฑ ํฌ๊ฒ 3๊ฐ์ง ๊ด์ ์์ ๊ณ ๋ฏผํด๋ณผ ์ ์๋ค. 1) ์ธ์ฆ ์ธ์ฆ์, REST API๋ฅผ ํธ์ถํ ์ฌ๋(ํด๋ผ์ด bcho.tistory.com
์ด๋ฒ์ ์์ ๊ด๊ณ๋ฅผ ์ ์ํจ์ผ๋ก์จ Wardrobe, Cloth, Record ์ํฐํฐ์ ์ค๋ณต ๊ธฐ๋ฅ์ธ ๋๊ธ ๊ธฐ๋ฅ๊ณผ ์ข์์ ๊ธฐ๋ฅ์ ์ํผ ํ์ ์ํฐํฐ์ธ PostEntity๋ก ์ด๊ด์ํค๋ ๋ฆฌํฉํ ๋ง์ ์งํํ๋ค. ๋ฌธ์ ๋ฐ์ ๊ณตํต ๋ก์ง๋ค์ ๊ฐ๊ฐ์ Service๊ฐ ์๋ PostServcie๋ก ์ด๋์ํค๋ ์์ ์ ์งํํ๊ณ ์์๋๋ฐ, ๋๊ธ ๋ฌ๊ธฐ ๋ฉ์๋์ธ writeComment()์์ StackOverflowError๊ฐ ํฐ์ง๋ฉด์ ๋ก์ง์ด ์ค๋จ๋๋ ์ํฉ์ด ๋ฐ์ํ๋ค. StackOverflowError๋ฅผ ๋ฐ์์ํค๋ ๋ถ๋ถ์ SLF4J์์ ์ํฐํฐ์ toString()์ ํธ์ถํ๋ฉฐ ๋ฐ์ํ๋ ๋ถ๋ถ์ด์๋ค. ์ํฐํฐ์ toString()์ ์ถ๊ฐ ์์ผ์ฃผ๋ ๋ถ๋ถ์ lombok์ @Data์ด๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ด๋ผ ํ๋จํ์๋ค. ๋ฌธ์ ์์ธ @..
๋๋ง์ ์ท์ฅ ์๋น์ค์ Entity์ธ Wardrobe(์ท์ฅ), Cloth(์ท), Record(์ฝ๋)๋ ๋๊ธ์ด ๋ฌ๋ฆด ์ ์๊ณ , ์ข์์๊ฐ ๋๋ฆด ์ ์๋ ๋์ผํ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋์ Entity์ธ Like(์ข์์)์ Comment(๋๊ธ)์ Wardrobe, Cloth, Record๊ฐ ์์ฑ์ผ๋ก ๋ชจ๋ ํฌํจํ๊ณ Wardrobe, Cloth, Record ๊ฐ๊ฐ์ ๋ชจ๋ Like์ Comment๋ฅผ ํฌํจํ๋ ์์ผ๋ก ๊ตฌํ์ ํ์๋ค. ๋ฌผ๋ก ๊ธฐ๋ฅ์ ์ ์ ๋์ํ์ง๋ง ๊ณผ์ฐ ์ด ๋ฐฉ๋ฒ ๋ฐ์ ์๋ ๊ฒ์ธ๊ฐ ์๋ฌธ์ด ์๊ฒผ๋ค. ์ด๋ฐ์์ผ๋ก ๊ตฌํํ๊ฒ ๋๋ฉด ์ค๋ณต ์ฝ๋๊ฐ ๊ต์ฅํ ๋ง์์ง๊ณ ๋ ๋์ผํ ํน์ง์ ๊ฐ์ง Entity๊ฐ ์ถ๊ฐ ๋๋ฉด Comment์ Like์ ๊ด๋ จ๋ ๋ก์ง์ ๋ ๋ค์ ์์ฑํด์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ๊ฒ ๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด ๊ตณ์ด Hib..
์์ญ, ์๋ฐฑ๋ง๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ๋ฐํํ๋ค๋ฉด..? API๋ฅผ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ๋ฐ์ดํฐ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ ์ํฉ์ด ๋ฌด์กฐ๊ฑด ๋ฐ์ํ๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ์ ์๋ฌด๋ฐ ์กฐ์น ์์ด ๋ฐ์ดํฐ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ค๊ณ ์๊ฐํด๋ณด์. ๋ช์ญ, ๋ช๋ฐฑ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ๋ ํฐ ์๊ด์ด ์์ง๋ง ๋ช์ญ๋ง, ๋ช ๋ฐฑ๋ง๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๊ฒ ๋๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ๋ฐ์ ์๋ค. ์ด๋ฌํ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ API ์ค๊ณ์์ ํ์ด์ง ๋ก์ง์ ํ์์ ์ผ๋ก ์ ์ฉ์์ผ์ผ ํ๋ค. ํ์ด์ง์ ์ ์ฉํ API ๊ตฌํ ์์ ๋ค์์ ๋๋ง์ ์ท์ฅ ์๋น์ค์์ ํ์ด์ง์ ์ ์ฉํ ์ท ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ API ๊ตฌํ ์์์ด๋ค. @Setter @Getter public class ResponseForClothes extends PaginatedResponse { private List cont..
JSON์ ๋ฌดํ ์ํ ๊ตฌ์กฐ๋ ์ ๋ฐ์ํ ๊น? ๋๋ง์ ์ท์ฅ ์๋น์ค์ REST API ๊ตฌํํ๋ฉด์ ๊ฐ์ฅ ๊ณ ์ํ ๋ถ๋ถ์ด๋ค. ๊ฐ๋ฐ ์ด๋ฐ์๋ ์๋ฌด ์๊ฐ ์์ด DTO๋ฅผ ํ์ฉํ์ง ์๊ณ Entity๋ฅผ ์ง์ ์ปจํธ๋กค๋ฌ์์ ๋ฐํํ๋๋ฐ ๊ฐ์ฒด๊ฐ ๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๊ณ ๊ทธ ๊ฐ์ฒด๊ฐ ๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ ๋ฌดํ ํธ์ถ ํ์์ด ๋ฐ์ํ๋ค. ์๋ฅผ ๋ค์ด ๋ฌดํ ํธ์ถ ํ์์ ๋์ถฉ ํํํ์๋ฉด a { b { c { } } } ์ด๋ฐ ์์ผ๋ก a์์ b๊ฐ ํฌํจ๋์ด b์ ํ๋๊ฐ ์ถ๋ ฅ๋๊ณ , ๋ b์ ํ๋์ c๊ฐ ํฌํจ๋์ด c์ ํ๋๊ฐ ์ถ๋ ฅ๋๊ณ ๋ง์ฝ์ c์ ํ๋์ ๋๋ค์ aํ๋๊ฐ ํฌํจ๋์ด ์๋ค๋ฉด ๋ฌดํ ํธ์ถ ํ์์ ๋ณผ ์ ์๋ค. ๊ฒฐ๊ตญ์ ์๋ฒ๊ฐ ์ฃฝ์ด๋ฒ๋ฆฌ๋ ์ํฉ์ ๋ง์ดํ๊ฒ ๋๋ค. ์์ ๊ฐ์ด ๋ฌดํ ์ํ ๊ตฌ์กฐ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ฅผ ํ์ ํ๊ธฐ ์ํด์๋ ์ฐ์ ๊ฐ์ฒด๋ฅผ JSON..