์๋
ํ์ธ์, REST ๋์ ์์ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ์ต๋๋ค.
delivery.kenticocloud.com/975bf280-fd91-488c-994c-2f04416e5ee3/items/
์ฟผ๋ฆฌ๋ฅผ ์ค์ ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์์ต๋๋ค(๋คํธ์ํฌ ์ค๋ํ ์ ์์ฒญ ์ฐธ์กฐ).
https://github.com/Simply007/apollo-link-rest/tree/master/examples/apollo2
๊ทธ๋ฌ๋ ์ค์ ์ฝํ
์ธ ๋ฅผ ๋ ๋๋งํ๋ ค๊ณ ํ ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐํํ์ง ์์์ต๋๋ค.
https://github.com/Simply007/apollo-link-rest/blob/master/examples/apollo2/src/Components/Article.js#L26
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ํํธ๊ฐ ์์ต๋๊น?
์ฝ์์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
writeToStore.js:111 Missing field __typename in {
"item": {
"system": {
"id": "117cdfae-52cf-4885-b271-66aef6825612",
"name": "Cof
์์ ๋ฅผ ์คํํ๋ ค๋ฉด /examples/apollo2๋ก ์ด๋ํ์ฌ ๋ค์์ ์คํํ์ญ์์ค.
npm install
npm run
์์ ๋ create-react-app ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์๋ ํ์ธ์ @Simply007์ ๋๋ค! ๊ทํ์ API ๋ฐ ์์ ์ฑ์ ์ดํด๋ณด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ด ๊ฑฐ๊ธฐ์ ๋ช ๊ฐ์ง ์ธ๋ถ ์ฌํญ์ ๋์น๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
type: "MyType"
๋ฅผ @rest()
์ง์๋ฌธ ํธ์ถ์ ์ ๋ฌํ๊ณ ์ถ์ ๊ฒ์
๋๋ค!
๊น์ด ์ค์ฒฉ๋ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ typePatcher
https://github.com/apollographql/apollo-link-rest/blob/75df172a028148a75daa4764c0a81d6f10ddaf69/src/restLink.ts๋ฅผ ์ดํด๋ณด๋ ๊ฒ๋ ์ข์ต๋๋ค.
๊ฑด๋ฐฐ!
์๊ฒ ์ต๋๋ค. ๋๋จธ์ง์์ ์ป์ ๋ฐ์ดํฐ์ ํ์์ ์ง์ ํด์ผ ํฉ๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ ค๋ฉด "MyType" ์ ํ์ ์๋๋ก TypePatcherTable์ ์ค์ ํ ๋ค์ ๋๋จธ์ง ์ ์์์ ์ด ์ ํ์ ์ค์ ํด์ผ ํฉ๋๋ค.
TypePatcherTable์ ์ฌ์ฉํ์ฌ ์ ํ์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์๊ฐ ์์ต๋๊น? ์ด์์ ์ผ๋ก ์ ํ ์ค์ฒฉ.
tests/restLink.ts์์ typePatcher๋ฅผ ์ฐพ์ผ์ญ์์ค. ๊ฑฐ๊ธฐ์ ๋ณต์กํ ์ค์ฒฉ ์์ ๊ฐ ์์ต๋๋ค.
(๋๋ ๋ด โโ์ ํ์ ์๊ฑฐ๋ ๊ฑฐ๊ธฐ์ ๋ํ ๋ฅ ๋งํฌ๋ฅผ ์ค ๊ฒ์ ๋๋ค, ์ฃ์กํฉ๋๋ค!)
https://github.com/apollographql/apollo-link-rest/blob/76a0e47e41a207db29dbaf862ee83f97f495ea92/src/__tests__/restLink.ts#L377 -L559
@Simply007 -- ์ด๊ฒ์ typePatcher
์ค์ ํ ์ ์๋ ๋ชจ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ณต์กํ ์์
๋๋ค.
์ข์์, ์ด๊ฒ์ด ๋ฐ๋ก ์ ๊ฐ ํ์ํ ๊ฒ์ ๋๋ค! :-)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
https://github.com/apollographql/apollo-link-rest/blob/76a0e47e41a207db29dbaf862ee83f97f495ea92/src/__tests__/restLink.ts#L377 -L559
@Simply007 -- ์ด๊ฒ์
typePatcher
์ค์ ํ ์ ์๋ ๋ชจ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ณต์กํ ์์ ๋๋ค.