[241220] TIL
์ค๋ ํ ๊ฒ
์ฌ์ด๋ ํ๋ก์ ํธ - Github ๋ก๊ทธ์ธ ๊ตฌํ (์งํ์ค)
- Github ๋ OAuth ๋ฅผ ํ์ค์ผ๋ก ๊ตฌํํ๊ณ ์๋ค.
- OAuth Flow ๋ฅผ ์ดํดํ๋ฉด ๋ค๋ฅธ ๊ตฌ๊ธ, ๋ค์ด๋ฒ ๋ฑ ์์ ๋ก๊ทธ์ธ๋ ๊ตฌํ ๊ฐ๋ฅ
1. ๊นํ๋ธ์๊ฒ ์ฐ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ ค์ค๋ค.
- Register a new OAuth app
- Client ID (๊ณต๊ฐํค)
- Client Secret (๋น๋ฐํค)
- ์ ๊ฐ์
.env
ํ์ผ์ ์ ์ฅํด์ ์ฌ์ฉ - ๋ง์น ์ฑ์ ์ ๋ถ์ฆ์ ๋ง๋๋ ๊ณผ์ ์ด๋ผ๊ณ ๋ณผ ์ ์์
2. ์ฌ์ฉ์์ GitHubID ์์ฒญ
- OAuth ์ฑ ๊ถํ ๋ถ์ฌ - GitHub Docs
- ์ฃผ์ params
- scope: GitHub์๊ฒ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉ์๋ก๋ถํฐ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ๋ฌด์์ธ์ง ์๋ฆผ
- ํ์ฌ ํ๋ก์ ํธ์์ ์ฌ์ฉ์ ํ๋กํ ์ ๋ณด๋ ์ด๋ฉ์ผ ์ฝ๊ธฐ ๊ถํ๋ง ์์ฒญ
- allow_signup: OAuth ํ๋ฆ ์ค์ GitHub ๊ฐ์
ํ๊ณ ๋ฑ๋กํ๋ ์ต์
์ด ์ ๊ณต๋๋์ง ์ฌ๋ถ
- ๊ธฐ๋ณธ๊ฐ์ true
- scope: GitHub์๊ฒ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉ์๋ก๋ถํฐ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ๋ฌด์์ธ์ง ์๋ฆผ
NextJS route.ts ํ์ผ
- API ๋ผ์ฐํธ๋ฅผ ์ ์ํ๋ ํ์ผ
- App Router ์์ ์๋กญ๊ฒ ๋์ ๋ ๋ฐฉ์ (์ด์ ์ Page Router ์์)
HTTP ๋ฉ์๋
- GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ํจ์๋ฅผ export ํ๋ฉด ์๋์ผ๋ก ํด๋น HTTP ์์ฒญ ์ฒ๋ฆฌ
Response ํ์
// ๋ค์ํ ์๋ต ๋ฐฉ์
return new Response("Hello");
return Response.json({ data: "hello" });
return Response.redirect("/new-page");
์บ์ฑ
export async function GET() {
return new Response("Hello", {
headers: {
"Cache-Control": "max-age=3600",
},
});
}
URLSearchParams
- URL์ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ๋ค๋ฃจ๊ธฐ ์ํ ์น ํ์ค API
-
[URLSearchParams - Web APIs MDN](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)
// ๊ฐ์ฒด๋ฅผ ์ฟผ๋ฆฌ ๋ฌธ์์ด๋ก ๋ณํ
const params = new URLSearchParams({
name: "john",
age: "25",
});
console.log(params.toString());
// ๊ฒฐ๊ณผ: "name=john&age=25"
์ปค๋ฐ ๋ฉ์ธ์ง์ ๋ํ ๊ณ ๋ฏผ (add vs implement)
add
- ์๋ก์ด ๊ฒ์ ๋จ์ํ ์ถ๊ฐํ ๋
- ๊ธฐ์กดย ์์คํ ์ย ์๋ก์ดย ๊ธฐ๋ฅ/ํ์ผ์ ๋ํ ย ๋
- ๋น๊ต์ ๊ฐ๋จํ ์ถ๊ฐ ์์ ์ผย ๋
feat:ย addย GitHubย iconย component
feat:ย addย newย routeย toย middleware
feat:ย addย errorย messageย component
implement
- ํน์ ๊ธฐ๋ฅ/๋ก์ง์ ๊ตฌํํ ๋
- ๋ณต์กํย ๋น์ฆ๋์คย ๋ก์ง์ดย ํฌํจ๋ ๋
- ์ ์ฒด ์์คํ /๊ธฐ๋ฅ์ย ์ค์ ๋ก ๋์ํ๊ฒ ๋ง๋ค ๋
feat: implement OAuth authentication flow
feat: implement payment processing system
feat: implement real-time chat functionality
๊ธฐํ
- ์๊ฐ
- ๋งํด๋ณด์นด
Leave a comment