Apollo-link-rest: ์‹คํ–‰ ๊ณ„ํš!

์— ๋งŒ๋“  2017๋…„ 11์›” 30์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: apollographql/apollo-link-rest

์ด์ œ ์ดˆ๊ธฐ ์„ค๊ณ„ ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ž‘์—…์„ ๋ถ„ํ• ํ•˜์—ฌ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค!

๋งํฌ๋ฅผ ์‹คํ—˜ํ•˜๊ณ  ์‹œ๋„ํ•˜๊ธฐ ์œ„ํ•ด master์— ๋ฒ„์ „์„ ์ž‘์„ฑํ•œ @sabativi ์—๊ฒŒ ํŠน๋ณ„ํ•œ ๊ฐ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋‹น์‹  ๋•๋ถ„์— ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๋ฆฌ๊ณ  ๋””์ž์ธ์— ์ข‹์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ๊ตฌ์ถ•์„ ์ถ”์ง„ํ•œ @fbartho ์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋„์›€์„ ์ฃผ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ๋ฌด์—‡์„ ํ•˜๊ณ  ์‹ถ์€์ง€ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!

์ž‘์—…

  • [x] apollo-link-state์™€ ์ผ์น˜ํ•˜๋„๋ก ๊ตฌ์กฐ/๋„๊ตฌ ์—…๋ฐ์ดํŠธ

    • [x] ๋” ์˜ˆ์˜๋‹ค

    • [x] ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ

    • [x] CI ๋„๊ตฌ

  • [x] ์—…๋ฐ์ดํŠธ ์ง€์‹œ๋ฌธ ์ด๋ฆ„์ด @rest ๋กœ ์ง€์ •๋จ
  • [x] ๋งํฌ ํด๋ž˜์Šค ์ด๋ฆ„์„ $ RestAPILink RestLink ๋Œ€์‹  RestLink๋กœ ์—…๋ฐ์ดํŠธ
  • [x] endPoint ๋ฅผ endpoint ๋กœ ์—…๋ฐ์ดํŠธ
  • [x] @rest(โ€ฆ ์ง€์‹œ๋ฌธ์— ๋Œ€ํ•ด endpoint ์˜ ๊ฐœ๋…์„ ๋ถ„ํ• ํ•˜๊ณ  ์„œ๋ฒ„ ๊ฒฝ๋กœ(ํ˜ธ์ŠคํŠธ ์ œ์™ธ)์— ๋Œ€ํ•ด path: ๋กœ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • [x] ํ•˜๋‚˜ ์ด์ƒ์˜ RestLink๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด endpoints: ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ ๋งต ์ง€์›
  • [x] ๊ฐ€์ ธ์˜ค๊ธฐ + ํ—ค๋”/์ž๊ฒฉ ์ฆ๋ช… ์ง€์›
  • [x] customFetch: ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • [x] ๋‚˜๋จธ์ง€ ํ˜ธ์ถœ์—์„œ method: ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • [x] fieldNameNormalizer ์ง€์›
  • [x] @export ์ง€์‹œ๋ฌธ
  • [x] ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ apollo-utilities๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ด๋™ํ•ฉ๋‹ˆ๋‹ค(๋งํฌ ์ƒํƒœ ์ฐธ์กฐ).
  • [ ] ํ˜ผํ•ฉ ๋ฐ ์ค‘์ฒฉ ์ง€์‹œ๋ฌธ ์‚ฌ์šฉ ์ง€์›

    • [ ] ์š”์ฒญ์˜ ์ผ๋ถ€๋ฅผ graphql ๋์ ์œผ๋กœ ๋ณด๋‚ด๊ณ  ์ผ๋ถ€๋ฅผ ๋‚˜๋จธ์ง€๋กœ ๋ณด๋‚ด๋Š” ์ง€์› ์ง€์›

    • [ ] ์ค‘์ฒฉ ์š”์ฒญ(์˜ˆ: graphql ์„œ๋ฒ„์˜ ๋ถ€๋ถ„ ์‘๋‹ต ๋˜๋Š” ์ด์ „ ๋‚˜๋จธ์ง€ ํ˜ธ์ถœ ํ›„)

  • [ ] apollo-client ํ†ตํ•ฉ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
  • [ ] apollo-link-rest์™€ ํ•จ๊ป˜ apollo-client๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์ œ ์•ฑ ์ถ”๊ฐ€

๋ชจ๋“  10 ๋Œ“๊ธ€

๋˜ํ•œ slack์˜ #apollo-link-rest ์ฑ„๋„์— ์ฐธ์—ฌํ•˜์„ธ์š”!

๊ธฐ์—ฌ ๋…ธ๋ ฅ์˜ ๊ด€์ ์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? fetch method ๋˜๋Š” headers ?

์ถ”์‹ : ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ถ”์ง„ํ•ด ์ฃผ์…”์„œ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์ข…๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค! ๐Ÿ™Œ

@emmenko ์˜ˆ, ์ข‹์€ ์‹œ์ž‘์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์ด๋ฅผ ์œ„ํ•ด apollo-link-http ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์—์„œ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”. ์ด ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์–ดํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋„ˆ๋ฌด ๊ธฐ์ฉ๋‹ˆ๋‹ค ๐ŸŽ‰

๋ญ, ์กฐ๊ธˆ์ด๋ผ๋„ ๋„์›€์ด ๋œ๋‹ค๋ฉด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ํ”„๋กœ์ ํŠธ์— ์˜จ์ „ํžˆ ๊ธฐ์—ฌํ•  ์‹œ๊ฐ„์ด ์—†์œผ๋‹ˆ ๋„ˆ๋ฌด ๊ธฐ๋Œ€ํ•˜์ง€ ๋งˆ์„ธ์š” ๐Ÿ™๐Ÿผ

๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ ๋จผ์ € ๊ทธ ๋ถ€๋ถ„์— ์ดˆ์ ์„ ๋งž์ถ”๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋ด…์‹œ๋‹ค ๐Ÿš€

credentials ๋ถ€๋ถ„๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. http ๋งํฌ์—์„œ ๋ณต์‚ฌํ•œ ํŒŒ์Šคํƒ€์ž…๋‹ˆ๋‹ค ๐Ÿ˜‚

๋‚˜๋Š” ์ด๋ฒˆ ์ฃผ์— 'ํ˜ผํ•ฉ ๋ฐ ์ค‘์ฒฉ ์ง€์‹œ๋ฌธ ์‚ฌ์šฉ ์ง€์›'์— ๋Œ€ํ•ด ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋ฅผ ์œ„ํ•ด graphql-anywhere ๋…ผ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ link-state๋ฅผ ์‚ดํŽด๋ณธ ํ›„ apollo-utililies ๋ฅผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ๋” ์ž‘์€ ์ž‘์—…์ด ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ด ๋ฌธ์ œ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๊ฑฐ๋‚˜ ๋” ๋ณต์žกํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?

@Skovy ์•„์ง credentials ๋ถ€๋ถ„์„ ๋งก์„ ๊ธฐํšŒ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ์ž‘์€ ์ž‘์—…์ด๋‹ˆ ์›ํ•˜์‹œ๋ฉด ๋งก๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜‰

@emmenko ๋ฉ‹์ ธ์š”, ์ฐ”๋Ÿฌ๋ณผ๊ฒŒ์š”! ๐Ÿ‘

๋‚จ์€ ์ด์Šˆ๋Š” ์ด์Šˆ DB์—์„œ ๋ณ„๋„๋กœ ์ถ”์ ํ•˜๋ฏ€๋กœ ์ด ํ‹ฐ์ผ“์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰