Apollo-link-rest: ๋™์ผํ•œ ์ฟผ๋ฆฌ์—์„œ graphql๊ณผ ๋‚˜๋จธ์ง€๋ฅผ ๊ฒฐํ•ฉ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

์š”์•ฝ

๋‚˜๋จธ์ง€ ์š”์ฒญ์„ graphql ์š”์ฒญ๊ณผ ํ˜ผํ•ฉํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ์š”์ฒญ ๋ชจ๋‘ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ๊ฐœ๋ณ„์ ์œผ๋กœ ์‹คํ–‰๋  ๋•Œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‘ ๊ฐ€์ง€๋ฅผ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ

const QUERY_AUTHORS_AND_PEOPLE = gql`
    query {
        people @rest(type: "[Person]", path: "authors/") {
            firstName
        }

        authors {
            id
            firstName
        }
    }

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

image

์—ฌ๊ธฐ์—์„œ ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•˜๋Š” ์˜ˆ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

blocking bug ๐Ÿ› has-reproduction help wanted ๐Ÿ› 

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์‚ฌ์‹ค ๋ฐฉ๊ธˆ ํ™•์ธํ–ˆ๊ณ  ์ด๋ฏธ ์•„ํด๋กœ ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. @fbartho ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด๋ฏธ ์ž‘์—…ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ธฐ๊บผ์ด ๋งก์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„๊ต์  ์‰ฌ์šด ์ˆ˜์ •์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋ช‡ ๊ฐ€์ง€ ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ์ƒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค ...

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

์•ˆ๋…•ํ•˜์„ธ์š” @ chimon2000- ์ด๊ฒƒ์€ ํฐ ๋ฒ„๊ทธ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์žฌํ˜„ ํ•  ์ˆ˜์žˆ๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•˜๋‹ค๊ณ  ๋Š๋ผ์‹ญ๋‹ˆ๊นŒ?

๋˜๋Š”์ด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” PR์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๊ธฐ๊บผ์ด ๋„์™€ ๋“œ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ์˜ ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์€ ์‹ค์ œ GraphQL ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @fbartho , ๋น ๋ฅธ ์‘๋‹ต์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ๋„ ๋ฐ (p) ๋ฐ˜์‘ ์˜ˆ์ œ๋กœ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ ๋œ ์˜ˆ์ œ ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์•„ํด๋กœ ๋งํฌ์˜ ์ž‘๋™ ๋ฐฉ์‹์— ํŠนํžˆ ๋Šฅ์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @fbartho , ์ €๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด

์†Œ์Šค๋ฅผ ์‚ดํŽด๋ณด๋ฉด forward ์ด ์ž‘์—…์„ ๋‹ค์Œ ๋งํฌ๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ๋˜๋Š” ์œ ์ผํ•œ ์‹œ๊ฐ„์€ here ์ž…๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ ๋™์ž‘์„ ์ง€์›ํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์Œ ๋งํฌ๋กœ ์ „๋‹ฌํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ์ด ์„น์…˜ ์„ apollo-link-state์—์„œ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (๋งํฌ ๋นŒ๋”์—๊ฒŒ ์ •๋ง ์œ ์šฉ ํ•ด ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€ ๊ด€๋ฆฌ์ž์™€ ํ˜‘๋ ฅํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋…ผ๋ฆฌ๋ฅผ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋กœ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์  ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค).

์‚ฌ์‹ค ๋ฐฉ๊ธˆ ํ™•์ธํ–ˆ๊ณ  ์ด๋ฏธ ์•„ํด๋กœ ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. @fbartho ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด๋ฏธ ์ž‘์—…ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ธฐ๊บผ์ด ๋งก์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„๊ต์  ์‰ฌ์šด ์ˆ˜์ •์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋ช‡ ๊ฐ€์ง€ ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ์ƒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค ...

@paulpdaniels ์•ผ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค. ๋ฐ›์•„์ฃผ์„ธ์š”.

์šฐ๋ฆฌ๊ฐ€ ์ง€์›ํ•˜๊ฑฐ๋‚˜ ์ค‘๋‹จํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ํŠน์ • ์œ„ํ—˜ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค :

  • `@export (as :โ€ฆ)๊ฐ€ ์‚ฌ์šฉ์ค‘์ธ @rest() ์ฟผ๋ฆฌ ๋‚ด์— @rest() ์ค‘์ฒฉ
  • `@export (as :โ€ฆ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” server-graphql ์ฟผ๋ฆฌ ๋‚ด๋ถ€์— @rest() ์ค‘์ฒฉ
  • @client ์ฟผ๋ฆฌ ๋‚ด์— @rest() ์ค‘์ฒฉ
  • ์ด๊ฒƒ์ด Typename Patcher ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ๊นจ์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค!

export ์ง€์‹œ๋ฌธ์ด server-graphql ์ฟผ๋ฆฌ ๋‚ด์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์•Œ ์ˆ˜์—†๋Š” ์ง€์‹œ๋ฌธ "๋‚ด๋ณด๋‚ด๊ธฐ".

@marcelombc ์„œ๋ฒ„ ๊ตฌํ˜„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. apollo-server ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜์ง€๋งŒ ์‚ฌ์–‘์„ ์ค€์ˆ˜ ํ•  ํ•„์š”๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@paulpdaniels ๋‹น์‹ ์ด ๋งž์•„์š”. ์ €๋Š” ์„œ๋ฒ„์—์„œ ๊ทธ๋ž˜ ํ•€์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ @export๋ฅผ ์ง€์›ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์ง€์‹œ๋ฌธ์„ ๋งŒ๋“ค์–ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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