[241220] TIL

์˜ค๋Š˜ ํ•œ ๊ฒƒ

์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ - Github ๋กœ๊ทธ์ธ ๊ตฌํ˜„ (์ง„ํ–‰์ค‘)

github-oauth

  • 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

image

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

๊ธฐํƒ€

  • ์š”๊ฐ€
  • ๋งํ•ด๋ณด์นด

Categories:

Updated:

Leave a comment