Skip to content

Latest commit

ย 

History

History
104 lines (81 loc) ยท 4.14 KB

File metadata and controls

104 lines (81 loc) ยท 4.14 KB

Loopback Begin Proejct

Loopback ํŠน์ง•

  • ์ •๋ง ๋น ๋ฅด๊ฒŒ REST API๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ API Document๋ฅผ Swagger ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.
  • CLI๋ฅผ ํ†ตํ•ด์„œ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ชจ๋ธ ์ƒ์„ฑ, ์ •์˜ ์ ‘๊ทผ ๊ถŒํ•œ ๋“ฑ๋“ฑ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ORM์œผ๋กœ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Loopback ์„ค์น˜

  • ๊ธฐ๋ณธ์ ์œผ๋กœ Node, NPM์ด ์„ค์น˜๋˜์žˆ๋Š” ํ™˜๊ฒฝ์ด๋ผ ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
$ npm install -g loopback-cli

Hello world ํ”„๋กœ์ ํŠธ ์„ค์ •

๋ฃจํ”„๋ฐฑ์˜ ๊ธฐ์ดˆ์ ์ธ ํŠน์ง•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$ lb
? ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? hello-world
? ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํ•จ์‹œํ‚ฌ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„ ์ž…๋ ฅ: hello-world
  create hello-world/
    info ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ hello-world(์œผ)๋กœ ๋ฒˆ๊ฒฝ

? ์‚ฌ์šฉํ•˜๋ ค๋Š” LoopBack ๋ฒ„์ „์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? 3.x (current)
? ์˜ˆ์ƒํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฅ˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? hello-world (A project containing a controller, includi
ng a single vanilla Message and a single remote method)
  • ํ„ฐ๋ฏธ๋„์—์„œ ์›ํ•˜์‹œ๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ ์ดํ›„ lb ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์„ค์ •์„ ์ด์–ด ๊ฐ‘๋‹ˆ๋‹ค.
  • ํ”„๋Ÿฌ์ ํŠธ ์ด๋ฆ„, ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„ ๋“ฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฒ„์ „์€ 3.x ์ตœ์‹  ๋ฒ„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์ƒํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฅ˜๋Š” hello-world๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

Hello world ํ”„๋กœ์ ํŠธ ์‹คํ–‰

$ cd hello-world/
$ node .
  • ์œ„์—์„œ CLI๋กœ ์ƒ์„ฑํ•œ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • node . ๋ช…๋ น์–ด๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค.
  • http://0.0.0.0:3000/explorer๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • API Document Swagger๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋˜๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

API Document

  • Loopback ๊ธฐ๋ณธ User๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ User API๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.
  • User API๋Š” ํšŒ์› ๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ, ํšŒ์› ์ •๋ณด ์ˆ˜์ •, ๋“ฑ๋“ฑ User์— ๋Œ€ํ•œ REST API๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

POST /Users (ํšŒ์› ๊ฐ€์ž…)

{
  "realm": "string",
  "username": "loopback",
  "email": "loopback@loopback.com",
  "password": "loopback"
}
  • data์— JSON ํƒ€์ž…์œผ๋กœ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์„ค์ •์ธ In-memory db์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

POST /Users/login (๋กœ๊ทธ์ธ)

{
  "email": "loopback@loopback.com",
  "password": "loopback"
}
  • credentials ์œ„์—์„œ ๊ฐ€์ž…ํ•œ email, password ์ •๋ณด๋ฅผ JSON ํƒ€์ž…์œผ๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • ํšŒ์› ์ •๋ณด๊ฐ€ ์ผ์น˜ํ•  ๊ฒฝ์šฐ Response Body์— AccessToekn ์ •๋ณด๋ฅผ ๋„˜๊ฒจ ์ค๋‹ˆ๋‹ค.
  • AccessToekn.id์˜ ๊ฐ’ KIjxd....์„ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ ToKen Set์— ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • loopback์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ์ฆ์ฒ˜๋ฆฌ๋ฅผ AccessToekn ๋ฐฉ์‹์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • AccessToekn ๋ชจ๋ธ ๋˜ํ•œ Loopback์˜ ๊ธฐ๋ณธ ์ œ๊ณต ๋ชจ๋ธ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

GET /Users/{id} (ํ•ด๋‹น ํšŒ์› ์กฐํšŒ)

  • id ํŒŒ๋ผ๋งˆํ„ฐ์— AccessToekn์—์„œ ๋ฐœ๊ธ‰ ๋ฐ›์€ userId๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์‹ ์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž์‹ ์˜ ์ด์™ธ์˜ ํšŒ์› ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ StatusCode 401๋ฅผ ๋ฆฌํ„ด ๋ฐ›์Šต๋‹ˆ๋‹ค.
{
  "error": {
    "statusCode": 401,
    "name": "Error",
    "message": "๊ถŒํ•œ ํ•„์ˆ˜"
  }
}

๊ฒฐ๋ก 

๋ฃจํ”„๋ฐฑ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ชจ๋ธ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์ธ CURD REST API๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. ๋˜ํ•œ, Swagger๋ฅผ ์ด์šฉํ•ด์„œ API Document ๋˜ํ•œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์–ด ์ •๋ง ๋น ๋ฅด๊ฒŒ API๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๋˜ ํŠน์ • API์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ ๋ฐ ์ธ์ฆ ์ฒ˜๋ฆฌ๋„ ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง€๊ณ , ์ด ๋ฐ–์—๋„ ๋‹ค์–‘ํ•œ ์žฅ์ ๋“ค๋กœ ๋น ๋ฅด๊ฒŒ ๊ณ„๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์žฅ์ ๋“ค์„ ํ•œ ๋ฒˆ์— ์†Œ๊ฐœํ•˜๊ธฐ๋Š” ํž˜๋“ค์–ด ํ•ด๋‹น ํŒŒํŠธ ๋งˆ๋‹ค ์†Œ๊ฐœ๋ฅผ ์ด์–ด ๋‚˜๊ฐˆ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ํฌ์ŠคํŒ…ํ•œ ๋‚ด์šฉ์€ ๋ถ€์‹คํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ๋ผ๋„ ์‹œ์ž‘์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณ„์† ๋Šฆ์–ด์งˆ ๊ฑฐ ๊ฐ™์•„ ๋น ๋ฅด๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋Š” ๊ฐ„๋‹จํ•œ ๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ค๋ฉด์„œ Loopback์˜ ์žฅ์ ๋“ค์„ ์†Œ๊ฐœํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.