2021 09 15 - Hi-Fi-Club/common GitHub Wiki
2021-09-15 ํ์
ํ์ ์๊ฑด
- โ๊ฐ์ธ์ ๋ณด ๊ด์ฌ์ฌ & ์ง์ญโ ํ์ด์ง์ url path ์ค์ ์ ๋ํด ์๋ ผํ ํ์๊ฐ ์์ ๊ฒ ๊ฐ์ต๋๋ค ( ๋ฐฑ์๋ )
- ๋ฐ์ํ ์น์ ์ฒ์๋ถํฐ ๋ง๋ค์ด๊ฐ๋ฉด ์ด๋จ๊นํฉ๋๋ค. (ํน์ ๋ ํฌ๋ฅผ ์ฐธ๊ณ ํ์ฌ ๊ณต๋ถํ๋ฉด์ ๋ง๋ค ์์ )
- ๊ฐ๋ฐ ์๋๋ฅผ ์ฌ๋ฆด ํ์๊ฐ ์์ด๋ณด์ ๋๋ค.
- ํ์ฌ ์ง๋ผ์ ๊ฒฝ์ฐ ๋ฌด๋ฃ ํ๋์ผ ๊ฒฝ์ฐ์ ์ธ๋ถ์ ๋ ธ์ถ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค.. (git์ผ๋ก ์ ๋ถ ์ฎ๊ฒจ์ผํ๋ ์๊ฐ์ค์ ๋๋ค.) (์ฌ๊ธฐ๊น์ง ๋ผ๋ ธ)
- ๋ก๊ทธ์์ ๊ธฐ๋ฅ์ ๋ํ ์๋ ผ (๊ตฌ๋)
- ๋ก๊ทธ์ธ ์ง๋ฌธ (์ฃผ๋๋ฏธ)
1. โ๊ฐ์ธ์ ๋ณด ๊ด์ฌ์ฌ & ์ง์ญโ ํ์ด์ง์ url path ์ค์ ์ ๋ํ์ฌ
- ๋ฐฑ์๋ ์ธก์ user_interest ๊ด๋ จ api :
๊ด์ฌ ๋ถ์ผ ํฐ ์นดํ
๊ณ ๋ฆฌ GET ์์ฒญ
GET /api/user/interests
๊ด์ฌ ๋ถ์ผ ์ธ๋ถ ์นดํ
๊ณ ๋ฆฌ GET ์์ฒญ
GET /api/user/interests/{categoryId}
[์ ์ ๊ด์ฌ ๋ฑ๋ก]
POST /api/user/interests
// POST ์์ฒญ์ body ์์
{
โuserIdโ : โ1",
โinterestsโ : [
{
โcategoryIdโ: 1,
โdetailIdโ:1,
โnameโ:โJavaScriptโ
},
{
โcategoryIdโ: 2,
โdetailIdโ:5,
โnameโ:โ์์ดโ
},
{
โcategoryIdโ: 5,
โdetailIdโ:16,
โnameโ:โ์์ธ ๊ณต๋ถํ๊ธฐโ
}
]
}
- ํ๋ก ํธ ๋ผ์ฐํ ์ ๋ฐฑ์๋ ์ธก์ url์ ๋ง์ถฐ์ user/interest || user/location
- ๊ฐ์ธ์ ๋ณด ์์ ํ๊ฒ ๋๋ค๋ฉด user/detail ์ด๋ฐ์์ผ๋ก? ์ถํ์ ๋ค์ ์ ํ ์์
2. ๋ฐ์ํ ์น์ ์ฒ์๋ถํฐ ํ์
- ๋ชจ๋ฐ์ผ / ํ๋ธ๋ฆฟ / PC ๋ฐ์ํ์ ํ ์ง ํ์คํ ์ ํ๊ณ ๊ฐ์ผํ์ง ์์๊น?
- max-width 768px
- ํ๋ก ํธ๋ผ๋ฆฌ ํ์ ์ข ๋ ํด๋ด์ผ ํจ
3. ๊ฐ๋ฐ ์๋๋ฅผ ์ฌ๋ฆด ํ์๊ฐ ์์ด๋ณด์ ๋๋ค.
- ๋ฐ๋๋ผ์ธ์ ๋ฑ ์ ํด๋์
- ๊ธฐ์กด ๊ธฐ๋ฅ : ์คํฐ๋ ๋ชจ์ง + ์คํฐ๋๋ฃธ ์์ฝ
- ๋ฒ์ lite : ๋ฉ์ธํ๋ฉด ๋ชฉ๋ฐ์ดํฐ + ๊ฒ์ํ ์ปจํ
์ธ GET์์ฒญ์ผ๋ก ๋ ๋๋ง (10์ 15์ผ + 7์ผ)
- ํ๋ฐ๊ธฐ ์ฑ์ฉ ์ผ์ ๊ณผ ์์ผ์ ๋ฆ์ด์ง ์ ์์
- ๊ฐ์ธ์ ๋ณด ๋ฐ์ดํฐ ๋ฐ์ํ ๋ฉ์ธํ๋ฉด ์ปจํ ์ธ ๋ ๋๋ง (์ง์ญ)
- ๋ฒ์ 1 : ์คํฐ๋ ๋ชจ์ง (์ฌํด๊น์ง) ๊ฒ์ํ ๊ฒ์๊ธ, CRUD + ํด๋น ๊ฒ์๊ธ ๋๊ธ
- ๋ฒ์ 2 : ์คํฐ๋๋ฃธ ์์ฝ (์ฐฝ์ >!>!>!?!?!)
- ํ์๋ฅผ ๊พธ์คํ ํ๋ฉด์ ์๋ + ์ง๋ ์ฒดํฌ๊ฐ ํ์ํ ๊ฒ ๊ฐ์. ๊ธ์์ผ ์ค์ 10์ 30๋ถ
- ํ๋ก ํธ ํ์ ใฑใฑ (ํ์ )
- ๋ฐฑ์๋ ํ์ ใฑใฑ (ํ์ )
4. ํ์ฌ ์ง๋ผ์ ๊ฒฝ์ฐ ๋ฌด๋ฃ ํ๋์ผ ๊ฒฝ์ฐ์ ์ธ๋ถ์ ๋ ธ์ถ์ด ๋ถ๊ฐ๋ฅ -> Git์ผ๋ก ์ด๋ฏผ
-
์ง๋ผ ๋ฌด๋ฃ ํ๋์ ์ ์ฅ์๋ฅผ ๊ณต๊ฐํ ์๊ฐ ์์ -> ํฌํธํด๋ฆฌ์ค์ ๊ฐ๋ฐ ๊ณผ์ ์ ๋ณด์ฌ์ฃผ๊ธฐ ํ๋ฆ
-
๊น์ผ๋ก ์ฎ๊ธฐ๋ฉด
- ์ด์๋ง ๋ค์ ๋ง๋ค์ด๋๊ธฐ
- Projects ํญ์์ ์นธ๋ฐ ๊ด๋ฆฌ ( ์ผ๋ฐ -> Automatic ์นธ๋ฐ์ด ๋ ๋ซ๋๋ผ๋ ์๊ฒฌ )
-
FE / BE ๋ณ๋ก ๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์ ? ์์ ํ๊ธฐ
- ๊ณตํต ์๋ฃ๋ ๊ตฌ๋๊ฐ ์ฎ๊น
5. ๋ก๊ทธ์์ ๊ธฐ๋ฅ์ ๋ํ ์๋ ผ (๊ตฌ๋)
- ์นด์นด์ค OAuth ์ธ์ฆ ์๋ฒ์์ ๋ก๊ทธ์์
- ํด์ผ ํ๋ ์ด์ : ์๋ฒ์์ ๋ก๊ทธ์ธ ํ ์ฌ๋์ AccessToken ์ ์ ์ฅ. ๋ก๊ทธ์์ํ๋ฉด AccessToken์ ์ ์ ๊ฐ ์๋ฒ์ชฝ์ ๋ ๋ฆผ
- ์๋ฒ์ชฝ์์๋ ํ์ฌ A ๋ผ๋ ์ ์ ๊ฐ ๋ก๊ทธ์ธ ์ํ์ธ์ง ๋ก๊ทธ์์ ์ํ์ธ์ง ํ์ธํ
- ๋ก๊ทธ์์ ํ ์ํ์์ ๋ค์ ๋ก๊ทธ์ธ ํ๋ฉด ์๋๋ก๊ทธ์ธ ๋๋ ๋ฌธ์ ๊ฐ ์์ (!!!!!)
6. ๋ก๊ทธ์ธ ์ง๋ฌธ (์ฃผ๋๋ฏธ)
- ์ ๋ฒ ์ด์ํธ๋์ปค ๋๋ ํ์ฌ JWTํ ํฐ์ด ์ ํจํ์ง ์ ํจํ์ง ์์์ง ๊ฒ์ฌํด์ ๋ก๊ทธ์ธ/์์ ์ฒ๋ฆฌ๋ฅผ ํ๋๋ฐ ์ด๋ฒ์๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์ง
- ์ง๋๋ฒ์ JWT ๊ธฐ๊ฐ์ด ๋ง๋ฃ๋๋ฉด ํ์ด์ง ์ ๊ทผ์ ์ฐจ๋จํ๊ฒ ํ์์
- ์ด๋ฒ์๋ ๊ฐ์ ( JWT ๊ธฐ๊ฐ ๋ง๋ฃ ๊ธฐํ 1์ฃผ -> ํ ์คํธ๋ฅผ ์ํด 10๋ถ์ผ๋ก ๋ฐ๊ฟ์ฃผ์๋ฉด ๊ฐ์ฌ.. )
- jwt ์ ํจ๊ธฐ๊ฐ์ด ์ง๋๋ฉด ๋ค์ ๋ก๊ทธ์ธ ํ ์ ์๋๋ก ํด๋ผ์ด์ธํธ์์ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํจ
- ๋ก๊ทธ์ธ ์์ฒญ ๋บด๊ณ ๋ ๋ชจ๋ ์์ฒญ์ jwt ํ ํฐ์ ๋ด์์ ๋ณด๋ด์ค์ผ ํจ
- ์๋ฌ์ฝ๋
- Bad request : 400
- JSON REST API ์ Token ๋ง๋ฃ : 401 (Unauthorized)
- ํ๋ก ํธ ์ธก ํ ์คํธ๋ฅผ ์ํด JWT ํ ํฐ ๋ง๋ฃ ๊ธฐ๊ฐ 10๋ถ์ผ๋ก ์์ ์์
- ๋ฆฌํ๋ ์ ํ ํฐ
- JWT ๊ฐ ๋ง๋ฃ๋์ ๋ ๋ก๊ทธ์ธ๋์ด ์๋ ์ ์ ๊ฐ ๋ค์ ๋ก๊ทธ์ธํ๊ฒ ํ๋ ๊ฑฐ๋ UX ์ธก๋ฉด์์ ์ข ์ด์ํจ.
- JWT ํ ํฐ์ ์ฌ๋ฐ๊ธ์ ์๋์ผ๋ก ๋์์ฃผ๋ ๋ฆฌํ๋ ์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์์ผ ํ ๊น?
- ์ฌ์ฉ์ ์ ๋ณด ๋ณด์ ์ธก๋ฉด์์ ํ์ํ๋ค๋ ๊ธ์ด ์์. (https://velog.io/@0307kwon/JWT%EB%8A%94-%EC%96%B4%EB%94%94%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%B4%EC%95%BC%ED%95%A0%EA%B9%8C-localStorage-vs-cookie)
- JWT ํ ํฐ์ด ๋ง๋ฃ๋ ์ํ์์ ๋ก๊ทธ์ธ ํ์ด์ง์์ ๋ก๊ทธ์ธ์ ๋๋ฅด๋ฉด ์๋ ๋ก๊ทธ์ธ (์นด์นด์ค์ OAuth ๋ก๊ทธ์ธ ์ฐฝ ์คํต)
- ์ ์ ์ ๋ณด ๋ก์ปฌ ๋ง๊ณ ์ํธ๋ฆฌ์ ์ํ์ ์ ์ฅํ๊ฑฐ๋ , ํ์ํ ๋ ๋ค์ jwt ๋ก ์์ฒญ ๋ณด๋ด๊ฑฐ๋?
- ์ํ์ ์ ์ฅํ ์ ์์ผ๋ฉด ๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์ด์ง.
- ์ธ๋ถ ์คํฌ๋ฆฝํ ์ผ๋ก ๋ก์ปฌ์๋ ์ ๊ทผ ๊ฐ๋ฅํ์ง๋ง ํด๋ผ์ด์ธํธ ์ฝ๋๋ ๋ณต์กํด์ ์ ๊ทผ ๋ถ๊ฐ?