์์ ์ฟผ๋ฆฌ:
mutation register {
register(
input: {
email: $email
avatar: $avatar
password: $password
}
) @rest(type: "Register", path: "auth/register", method: "POST")
}
์์์๋ ํ์ผ ๊ฐ์ฒด๋ฅผ ๋ณด๋ด๋ ํ์ผ ์ ๋ ฅ์ด ์์ต๋๋ค(์ด๊ฒ์ ์๋ฐํ ์์ฑ์ ๋๋ค). ์๋ฐํ ๋ณ์๋ฅผ ๊ธฐ๋กํ ๋ ์ด ์์ฑ์ด ์ ์๋ ๊ฒ์ ๋ณผ ์ ์์ง๋ง apollo-link-rest๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ํ์ผ ๊ฐ์ฒด๊ฐ ๋น์ด ์๊ฒ ๋ฉ๋๋ค.
๋์ฐ๋ณ์ด๋ฅผ ๋ณด๋ด๊ธฐ ์ ์ ๋ณ์ ๋ก๊น
:
apollo๋ฅผ ํตํด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ๊ฐ์ฒด๋ ๋น์ด ์์ต๋๋ค.
๋ฌธ์์์ ํ์ผ ์ ๋ก๋์ ๋ํ ์ธ๊ธ์ ์ฐพ์ ์ ์์ผ๋ฏ๋ก ๊ฐ๋ฅํ ๊ฒ์ธ์ง ํ์คํ์ง ์์ต๋๋ค.
File ๊ฐ์ฒด๋ฅผ ๋งน๊ธ๋งํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ๋ฒ๊ทธ๋ฅผ ์์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฆ, ๋๋ ๋ฐ์ ๋ค์ดํฐ๋ธ์์ Apollo-link-rest๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ต๊ทผ์ ์ด๊ฒ์ ์ฌ์ฉํ์ง ์์์ต๋๋ค.
์ด๋ฅผ ๋๋ฒ๊ทธํ๊ณ ์๋ํ์ง ์๋ ์ด์ ๋ฅผ ํ์ ํ๋ ค๋ฉด ์์ค๋ฅผ ์ฝ์ด์ผ ํ ์๋ ์์ต๋๋ค! ์ค์ ์์ ์ Apollo-link-rest๊ฐ ์๋๋ผ Apollo-client์ ์์ ์ ์์ต๋๋ค!
๋ต์ฅ์ ๋ณด๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ ๋ ์ฃผ๋ก ํ์ฑํํด์ผ ํ๋ ์ค์ ์ด๋ ์ถ๊ฐํด์ผ ํ๋ ๋งํฌ์ ๊ฐ์ ๋ช ๋ฐฑํ ๊ฒ์ ๋์น๊ณ ์์ง ์์์ง ํ์ธํ๊ณ ์ถ์์ต๋๋ค. :slightly_smiling_face:
์๋ฅผ ๋ค์ด ์ผ๋ฐ apollo์์ ํ์ผ์ ์ ๋ก๋ํ๋ ค๋ฉด apollo-upload-client(https://github.com/jaydenseric/apollo-upload-client)๊ฐ ํ์ํ๋ค๊ณ ์ธ๊ธํ๋ ์ฌ๋๋ค์ ๋ณธ ์ ์ด ์์ต๋๋ค.
apollo-link-rest์ ํด๋ผ์ด์ธํธ์ ์ ์ฌํ ๋งํฌ๋ฅผ ์ถ๊ฐํด์ผ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์๋์, ์ฌ๊ธฐ์ ์ ์ฉ๋์ง ์์ต๋๋ค.
์ต๊ทผ 7์์ ๋๊ตฐ๊ฐ apollo-link-rest๋ฅผ ์ฌ์ฉํ ๋ฐ์ ํ์ผ ์ ๋ก๋์ ์๋ฅผ ๊ฒ์ํ์ต๋๋ค.
์ด์ฉ๋ฉด ์ด๊ฒ์ด ๋์์ด ๋ ๊น์?
https://github.com/apollographql/apollo-link-rest/issues/200#issuecomment -509287597
๋ง์ฝ ๋น์ ์ด ๊ทธ๊ฒ์ ์์๋ธ๋ค๋ฉด, ์๋ง๋ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ฌธ์ ์น์ ์ ์์ฑํด์ผ ํ ๊ฒ์ ๋๋ค!
@fbartho ๊ฐ์ฌํฉ๋๋ค!
๊ทธ ๋ฌธ์ ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋์์ผ๋ฉฐ, bodySerializers
ํ์ผ ์ธ์ฝ๋ฉ ๋ฐฉ๋ฒ์ ์ถ๊ฐํด์ผ ํ์ต๋๋ค.
bodySerializers: {
fileEncode: (data: any, headers: Headers) => {
const formData = new FormData()
formData.append('file', data, data.name)
headers.set('Accept', '*/*')
return { body: formData, headers }
}
}
๋ํ ์ฟผ๋ฆฌ์์ ์ง๋ ฌ ๋ณํ๊ธฐ๋ฅผ ์ง์ ํ๋ ๋ถ๋ถ
@rest(
type: "File"
path: "YOUR_API_URL"
method: "POST"
bodySerializer: "fileEncode"
) {
์ด์ ๊ฐ์ ๊ฒ์ด ๋ฌธ์์ ์๋ค๋ฉด ๋งค์ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค!