์ฌ๋ฌ๋ถ ์๋ ํ์ธ์,
WSO2์ ๋ฏธ๋๋ฅผ ์ํด GraphQL API์ ๋ํ ๊ฐ๋ ฅํ ์ง์์ด ๊ณํ๋์ด ์๋์ง ์๊ณ ์ถ์ต๋๋ค. GraphQL์ REST์ ๋ํ ๊ฐ๋ ฅํ ์ฃผ์ฅ์ผ๋ก API ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ์ ์ ๋ ๋ง์ด ์ฑํ๋๊ณ ์์ต๋๋ค.
์ค๋๋ GraphQL์ ์ํ ํ๋ฅญํ ๋๊ตฌ๊ฐ ๋ง์ด ์์ง๋ง ๋๊ท๋ชจ ์ฑํ์ ํฐ ๋ณ๋ชฉ์ ์ค๋๋ API ๊ฒ์ดํธ์จ์ด์ ์ง์์ด ๋งค์ฐ ์ด์
ํ๋ค๋ ๊ฒ์
๋๋ค.
๋ฌผ๋ก ์ฌ์ ํ ์๋ํฉ๋๋ค. GraphQL ์๋ํฌ์ธํธ๋ REST์ ํธํ๋๋ฏ๋ก WSO2 APIM์์ REST ์๋ํฌ์ธํธ๋ฅผ ์์ฑํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค๋๋ ์ด๊ฒ์ ์ต์ ์ ๋ฐฉ๋ฒ์ด ์๋๋ฉฐ ์ค๊ณ์ ๋๋ถ๋ถ์ WSO2 APIM ๊ธฐ๋ฅ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ ์ด์ ๋ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ ์๋ํฌ์ธํธ์ API ํด๋ฌ์คํฐ์ ์ ์ฒด ์คํค๋ง๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์ฒด GraphQL API๋ฅผ ์ ๊ณตํ๋ ์์ญ ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์๋๋ผ๋ Apollo ๋๊ตฌ https://www.apollographql.com/docs/graphql-tools/schema-stitching.html๊ณผ ๊ฐ์ API ๋ผ์ฐํฐ๋ฅผ ํตํด ์ด๋ฅผ ์ง๊ณํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด ๋๋ฌธ์ WSO2์์ ์ ํ ๋ฐ ์์ต ์ฐฝ์ถ ๊ธฐ๋ฅ์ ์ ์ ํ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ด๋ ์๋ํฌ์ธํธ๋ก ๊ตฌ์ฑ๋์ง๋ง GraphQL์์๋ GraphQL ๊ธฐ๋ฅ์ผ๋ก ๊ตฌ์ฑํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ค๋๋ GraphQL ๋์ ์ ๊ตฌ์ฑํ๋ฉด ์ํฐ DDOS ์๊ตฌ ์ฌํญ์ ์ ์ธํ๊ณ API ๊ฒ์ดํธ์จ์ด์ ๋๋ถ๋ถ์ ์ ์ฉ์ฑ์ ์๊ฒ ๋ฉ๋๋ค.
๋ด GraphQL ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ง๋ค๊ณ Apollo ์๋ฒ๋ก ์ง๊ณํ๊ณ WSO2 ๊ฒ์ดํธ์จ์ด๋ก ์ ์ ํ๊ฒ ๋ณดํธํ๊ณ , ์์ต์ ์ฐฝ์ถํ๊ณ , ๋ชจ๋ํฐ๋งํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด๊ฒ์ด ๋ง์ ์์ ์ด๋ผ๋ ๊ฒ์ ์ดํดํ์ง๋ง ์ค๋๋ API ๊ฒ์ดํธ์จ์ด ์ค GraphQL API์ ๋ํ ์ง์์ ๋๋ฌด ๋น์ฝํ์ฌ ์ด๊ฒ์ด WSO2์ ๊ฐ๋ ฅํ ๊ฒฝ์ ์ฐ์์ด์ ํฐ ๊ธฐํ๊ฐ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ถ์์ ๊ฒฝ์ฐ์๋ ํ์ฌ GraphQL์ ๋ํ ์คํ ์์ค ๋ถ์์ด ์์ต๋๋ค. ์ ๊ฐ ์๊ฐํ ์ ์๋ ์ ์ผํ ๋ถ์์ apollo Optics์ด๊ณ ํ์ ์์ค์ ๋๋ค.
์ ์์ ์ ๋ค์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ก๋๋งต์ด ๊ณํ๋ ๊ฒ์ด๋ผ๋ฉด ๋ก๋๋งต์ ๋ํด ๋ ์๊ณ ์ถ์ต๋๋ค.
์น์ ํ๋,
+1
+1
+1
+1
+1
+1
:+1:
์๋ ํ์ธ์ @YannickB ์ ๋๋ค .
์ฌ๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ ๋ก๋๋งต์ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค.
์ ๋ GraphQL์ ๋ง์ด ์ฌ์ฉํ์ง ์์๊ธฐ ๋๋ฌธ์ ์๊ตฌ ์ฌํญ์ ์ ํํ ๋ฒ์๋ฅผ ์ดํดํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ช ํ์ฑ์ ์ํด ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ๊ธฐ๋ฅ์ ์ ํํ ์ ํ ์ฌํญ์ ์ค๋ช ํ ์ ์์ต๋๊น? ๊ธฐ๋ณธ์ ์ผ๋ก Apollo ์๋ฒ๋ฅผ ํตํด ๋ ธ์ถ๋๋ ๋ด์ฉ๊ณผ ํ์ฌ API Gateway๋ฅผ ํตํด ์ด๋ฅผ ์ด๋ป๊ฒ ๋ ธ์ถํด์ผ ํ๋์ง์ API Gateway๋ฅผ ํตํด ๋ ธ์ถํ๋ ์ด์์ ์ธ ๋ฐฉ๋ฒ์ด ๋ฌด์์ธ์ง ๋น๊ตํฉ๋๋ค.
๊ฐ์ฌ ํด์,
๋์.
+1
์๋ ํ์ธ์ @nuwand ์ ๋๋ค .
๋จผ์ ๋ฉด์ฑ ์กฐํญ์ผ๋ก, ํฐ์ผ์ ์ด์ด๋ ๊ธฐ๋ฅ์ด ์ด๋ป๊ฒ ์๋ํด์ผ ํ๋์ง ์ค๋ช ํ ์ ์๋ ๊ฐ์ฅ ์ข์ ์ฌ๋์ธ์ง ํ์ ํ ์ ์์ต๋๋ค. ๋๋ฅผ GraphQL ๋ฐ API Gateway์ ๊ฐ์ ๊ฒ์ ํฌํจํ์ฌ ์ ๋ง ์ข์ ์ํํธ์จ์ด ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด ๊ณต๋ถํ๋ ์ฌ๋์ด๋ผ๊ณ ์๊ฐํ์ญ์์ค. ์ด ์ฐ๊ตฌ๋ฅผ ํ๋ ๋์ ํ์ฌ ์์ฅ์ ์๋ ์ด๋ค API ๊ฒ์ดํธ์จ์ด๋ GraphQL์ ์๋ฒฝํ๊ฒ ์ง์ํ๋๋ก ์ค๊ณ๋์ง ์์๋ค๋ ๊ฒ์ด ๋ถ๋ช ํด์ก์ต๋๋ค. ๋ฐ๋ผ์ ์์ง ์ค์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ง๋ง ์ต์ ์ ๋คํด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ค๋ช ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด ์๊ฐ ๋ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ํ๊ณผ ์ก์ฅ์ด๋ผ๋ ๋ ๊ฐ์ฒด์ ๋ํด CRUD ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ API๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
Rest API๋ฅผ ์ฌ์ฉํ๋ฉด http://myapi.com/api/product ๋ฐ http://myapi.com/api/invoice ๋ผ๋ ๋ ๊ฐ์ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๊ทธ๋ฐ ๋ค์ GET/POST/PUT/DELETE ์์
์ ์ํํฉ๋๋ค. ๊ทธ๋ค์.
WSO2์์๋ ๊ฐ ์๋ํฌ์ธํธ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก(ํ๋๋ ์ ํ์ฉ์ผ๋ก, ๋ค๋ฅธ ํ๋๋ ์ก์ฅ์ฉ์ผ๋ก) ๊ตฌ์ฑํ ๋ค์ WSO2์์ ์ ๊ณตํ๋ ๋ณด์/์ ํ/์์ต ์ฐฝ์ถ ๋ฑ... ๊ธฐ๋ฅ์ ๋
๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ๋๋ก ๊ฐ ์๋ํฌ์ธํธ์ ๋ํ ํน์ ๊ตฌ์ฑ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ GraphQL API๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ ํ์ฌ ํจ์ฌ ๋ ์ ํ์ ์ ๋๋ค. ์ด๋ ๋ ๊ฐ์ฒด ๋ชจ๋ ๋์ผํ ๋์ http://myapi.com/graphql์์ ์ก์ธ์คํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ http://myapi.com/graphql/product ๋ฐ http://myapi.com/graphql/invoice ๋์ ์ ์ฌ๋ฌ ๊ฐ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ GraphQL์ ๋ชจ๋ฒ ์ฌ๋ก์ ์์ ํ ๋ฐ๋ ํจํด์ด๋ฉฐ ์ต๋ํ ํ์ฉํ ๊ฒ์ ๋๋ค. ์ํ๊ณ์ ๋๊ตฌ๊ฐ ์๋์ ์ค์งํฉ๋๋ค. ๋ํ ๋ชจ๋ HTTP ์์ ์ด POST๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด GraphQL ์๋ํฌ์ธํธ์์ ๋ค์ ์์ฒญ์ ์ํํ ์ ์์ต๋๋ค.
query {
product(id: 1) {
id
name
}
}
mutation {
createInvoice(data: {
'customerID': 1
'productID': 1
'price': 20
}) {
id
number
total
}
}
์ฒซ ๋ฒ์งธ ์์ฒญ์ ์ง์ ๋ ์ ํ์ ์ ๋ณด๋ฅผ ์ฟผ๋ฆฌํ๊ณ ๋ ๋ฒ์งธ ์์ฒญ์ ์ด ์ ํ์ ๋ํ ์ก์ฅ์ ์์ฑํฉ๋๋ค. ๋ ์ฟผ๋ฆฌ ๋ชจ๋ http://myapi.com/graphql ๋์ ์์ ์คํ๋ฉ๋๋ค.
๋ฐ๋ผ์ WSO2 ๊ฒ์ดํธ์จ์ด์ ํ์ฌ ์ํ์์ ๋ด๊ฐ ์๋ชปํ์ง ์์ ๊ฒฝ์ฐ ๋์ ๋น ๊ตฌ์ฑ๋ง ํ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด http://myapi.com/graphql ๋์ ์ ๊ตฌ์ฑํ์ฌ createInvoice์ ๋ํ ๊ฐ ํธ์ถ์์ 0.01์ผํธ๋ก ์์ต์ ์ฐฝ์ถํ๋ ค๋ฉด ๊ทธ๋ฌ๋ฉด ์ ํ ํธ์ถ๋ 0.01์ผํธ๋ก ์์ต์ ์ฐฝ์ถํฉ๋๋ค. REST๋ฅผ ์ฌ์ฉํ๋ฉด POST์์ 0.01cent๋ฅผ http://myapi.com/api/invoice ๋ก ๊ตฌ์ฑํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ด๊ฒ์ด ์ ์์ ์ ์ดํดํ๊ธฐ์ ์ถฉ๋ถํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด๊ฒ์ ๊ฐ๋จํ ์์ด์ง๋ง ๋ค๋ฅธ ๋ง์ ๊ฒ์ ์ฐพ์ ์ ์์ต๋๋ค. ํ์ฌ ์ํ์์๋ ๊ตฌ์ฑ์ ์ ์ฐ์ฑ ๋ถ์กฑ์ผ๋ก ์ธํด GraphQL์์ ๊ฒ์ดํธ์จ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋น์ ์ ์๋ชป์ด ์๋๋๋ค. ๋๋ ์์ฅ์ ์๋ ๋ค๋ฅธ ๋ชจ๋ API ๊ฒ์ดํธ์จ์ด๊ฐ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค.
๋ฐ๋ผ์ ์๋ฃจ์ IMHO๋ WSO2 ๊ตฌ์ฑ์ ๋์ ๋ฟ๋ง ์๋๋ผ GraphQL ๊ธฐ๋ฅ์๋ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ด๊ฐ ์๊ฐํ๊ธฐ์ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ก ํ๋ช ๋ ์ ์์ง๋ง ํ์ฌ GraphQL์ API ๊ฒ์ดํธ์จ์ด์ ์๋ํ์ง ์๊ฑฐ๋ ๋งค์ฐ ์ ํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ฅ์์ ํ์คํ ํ์ํฉ๋๋ค.
์ด ์ ์์ด ์๋นํ ๊ด์ฌ์ ๋์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋ฐ๋ฅด๋ ์ฌ๋๋ค์๊ฒ ๊ทํ์ ์ฌ์ฉ ์ฌ๋ก์ WSO2๊ฐ ์ด ๊ธฐ๋ฅ์ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋๋ก ์ด๋ํฉ๋๋ค. ์ํฉ์ ์ค๋ช ํ๊ธฐ ์ํด ์ต์ ์ ๋คํ์ง๋ง, ์ด๋ฅผ ์ ์ ํ๊ฒ ๊ตฌํํ๋ ค๋ฉด ์ค์ ์๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์น์ ํ๋,
์ผ๋
์์ ์๋ฃจ์ ์ผ๋ก API ๊ฒ์ดํธ์จ์ด์ ๋ํ ์์ ํ ์ง์์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์๋น์ค ๋๋ ํฐ๋ฆฌ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ์ต์ํ WSO2-AM graphql ๋์ ์์ ๊ฐ์ ธ์ฌ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๋ ํ์ธ์ @YannickB ์ ๋๋ค .
์ค๋ช ๊ฐ์ฌํฉ๋๋ค. ์ฃ์กํฉ๋๋ค. ํ์ง๋ง ์ ๋ ์ฌ์ ํ ๋์ ์ ํ๊ณ๋ฅผ ํ์ ํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๋์ ๊ณผ ๊ด๋ จํ์ฌ API Manager์ ๊ธฐ๋ฅ์ ์ค๋ช ํ๋ฉด ํ๊ณ๋ฅผ ์ ํํ ์ง์ ํ ์ ์์ต๋๋ค.
http://myapi.com/api/invoice ๋ฐ http://myapi.com/api/product์ ๊ฐ์ ๋ ๊ฐ์ ์๋ํฌ์ธํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ ๋์ ์ด ๋์ผํ ํธ์คํธ(myapi.com)์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋์ผํ ์์ ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. API Manager์ ๋ ์๋ํฌ์ธํธ๋ฅผ ํ๋ก์ํ๋ ๋จ์ผ API๊ฐ ์์ด์ผ ํ๋ ์๊ตฌ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ ํด์ผ ํ ์ผ์ ๋ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋๋ค. ํ๋๋ POST /invoice๋ก, ๋ค๋ฅธ ํ๋๋ POST /product๋ก ์ง์ ํ๊ณ http://myapi.com/ api/ ๋ฅผ ํด๋น API์ ๋์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋จ์ผ API๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ ์๋ํฌ์ธํธ์ ๋ชจ๋ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฒ์ดํธ์จ์ด ํธ์คํธ๊ฐ gateway.myapi.com์ด๊ณ ์์ฑํ๋ API์ ์ปจํ ์คํธ๊ฐ /graphql์ด๊ณ ๋ฒ์ ์ด 1.0.0์ธ ๊ฒฝ์ฐ ๋ค์ ์์ฒญ์ ์๋์ ๊ฐ์ด ์ ์ ํ ์๋ํฌ์ธํธ๋ก ๊ฐ๊ฐ ํ๋ก์๋ฉ๋๋ค.
POST http://gateway.myqpi.com/graphql/1.0.0/invoice -> POST http://myqpi.com/api/invoice
POST http://gateway.myqpi.com/graphql/1.0.0/product -> POST http://myqpi.com/api/product
๋ ๋์ ์ ๋ชจ๋ ํ๋ก์ํ๋ ค๋ฉด 1๊ฐ์ API(/graphql/1.0.0)๋ง ์์ฑํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฏธ ์๊ณ ์๋ ๋ด์ฉ์ ๋ฐ๋ณตํด์ ๋ง์๋๋ ค ์ฃ์กํฉ๋๋ค. ํ์ง๋ง ๋งคํ์ ๋ํ ๋ฆฌ์์ค์ ์ ํ ์ฌํญ์ ์ง์ ํ ์ ์๋ค๋ฉด ๋ฌธ์ ๋ฅผ ๋ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ GraphQL์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ฌ ํด์,
๋์.
nuwand, ๋๋ ๋น์ ๋ณด๋ค ๋ ๊ธฐ์ ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ APIM/Identity ์๋ฒ์ ๋ํ ๋ด ์ดํด์์ ์ฐ๋ฆฌ๋ API ์์ค์์ API ๊ด๋ฆฌ(๋ณด์, ์กฐ์ , ... ..)๋ฅผ ์ ์ํฉ๋๋ค. GraphQL์ '๋ฉํ' ์ธ์ด๋ฅผ ํตํด API๋ฅผ ๊ฒฐํฉํ ์ผ์ข ์ '์ํผ' ์ธ์ด์ ๋๋ค. ๋ด๊ฐ ๊ด์ฌ์ ๊ฐ์ง ๋งํ ๊ฒ์ GraphQL์ ๊ฐ๋ ๊ณผ WS02 APIM์ ๊ฐ๋ ์ด ์ด๋ป๊ฒ ์ผ์นํ๋์ง ์ดํดํ๋ ๊ฒ์ ๋๋ค. ๋ ๊ฐ๋ ์ด ํตํฉ๋ ๊ฒฝ์ฐ. ๋ฌผ๋ก ๋ชจ๋ ๊ฒ์ ์์ฒด์ ์ผ๋ก ๊ด๋ฆฌํ๋ GraphQL als 1 ๋ฆฌ์์ค๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ด ๋ชจ๋ '๋ ๊ฑฐ์' ์๋น์ค๊ฐ graphql ์๋ฒ๋ฅผ ํตํด ์ก์ธ์คํ ์ ์๋ ๊ฒฝ์ฐ WS02์ ๊ฐ์ด ์ ํ๋ฉ๋๋ค.
+1
GraphQL์ ์ฌ์ฉํ๋ฉด ์ค์ ๋ก๋ ๋จ ํ๋์ ์๋ํฌ์ธํธ๋ง ์์ผ๋ฏ๋ก myapi.com/graphql/invoice ๋ฐ graphql/product์ ๊ฐ์ ํญ๋ชฉ์ด ์์ผ๋ฉฐ ์๋์ธํธ๋ "myapi.com/graphql"์ด๋ฉฐ ๊ทธ ์ดํ์๋ ์๋ฌด ๊ฒ๋ ์์ต๋๋ค. ๊ฐ ์ฟผ๋ฆฌ ๋ฐ ๋ณํ์ ๋ํด ๋ฌธ์ ๊ทธ๋๋ก ๋์ผํ URL์ด๋ฉฐ ์์ฒญ ๋ณธ๋ฌธ ๋ด๋ถ์ ์ ์๋ ์์ ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ์ผ๋ถ API ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์์ฒญ ๋ณธ๋ฌธ์ ๋ํ ๋ด์ฑ, graphql ์คํค๋ง์ ๋ํ ์ง์ ๋ฑ์ ํ์๋ก ํฉ๋๋ค. ์ด๊ฒ์ด ๋จ๊ธฐ์ ์ผ๋ก๋ _๋ถ๊ฐ๋ฅ_ํ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. WSO2๋ ๊ฑฐ์ ๊ทธ ์์ฒด๋ก GraphQL ์๋ฒ/๊ฒ์ดํธ์จ์ด๊ฐ ๋์ด์ผ ํฉ๋๋ค(๋๋ ์ด๋ฅผ ํตํฉํด์ผ ํจ).
๋์ , ์ฐ๋ฆฌ๋ ์ด๋ค API ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด _๊ฐ๋ฅํ_์ง์ ์ด์ ์ ๋ง์ถฐ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํค๋๋ฅผ ์ค์ ํ์ฌ WSO2์ ์ค์ GraphQL ์๋ฒ/๊ฒ์ดํธ์จ์ด ๊ฐ์ ํ๋ ฅ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ตํ: GraphQL ์๋ฒ๋ ์ฟผ๋ฆฌ์ ๋ณต์ก์ฑ์ ๊ณ์ฐํ๊ณ ์ด ์ ๋ณด๋ฅผ HTTP ํค๋๋ก ์๋ต์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ WSO2๋ ์ด ๊ฐ์ ๊ฐ๊ฒฉ์ผ๋ก ๋ณํํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ํฐ๋ง์ ์ํด GraphQL ์๋ฒ๋ JSON ํํ์ ์ฟผ๋ฆฌ๋ฅผ ํด์๊ณผ ์ ์ฌํ ์์ฌ ์๋ํฌ์ธํธ(๋ค)๋ก '๋ณํ'ํ ์ ์์ผ๋ฉฐ, WSO2๋ ๋ชจ๋ํฐ๋ง ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ์๋ต ํค๋์์ ์ฝ์ด ์ด๋ฅผ ์ฝ์ต๋๋ค. ๋ณด์์ ์ํด ๋์ผํ ์์ ์ 2๋จ๊ณ๋ก ์ํํ ์ ์์ต๋๋ค. ์ฒซ์งธ, GraphQL ์๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ๋๋จธ์ง ์ ํ์ ์๋ํฌ์ธํธ๋ก ๋ณํํ๋๋ก ์์ฒญํ๊ณ , WSO2๋ ํต๊ณผ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ค์ ์๋ํฌ์ธํธ๋ก ์ ๋ฌํฉ๋๋ค.
์ ๋ WSO2๋ฅผ ์ฒ์ ์ ํ๊ณ ๋๋ถ๋ถ์ ๋ฌธ์๋ฅผ ์ฝ์ง ์์์ผ๋ฏ๋ก ์ด๋ฌํ ๊ธฐ๋ฅ์ด ์ด๋ฏธ WSO2์ ์์ ์ ์์ต๋๋ค(๋ ๊ตฌ์ฒด์ ์ผ๋ก: ์ผ๋ฐ์ ์ผ๋ก ์ ํํ REST ๋์ URI์์ ํ์๋๋ WSO2์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํด ๋์ผํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋์ง ์ฌ๋ถ). ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํ์๋ฉ๋๋ค(์: ํค๋ ๊ฐ ๋๋ WSO2 ์์ฒด์ ๋ํ ๋ค๋ฅธ API). ์ด๋ฌํ WSO2 ๊ด๋ จ ๊ธฐ๋ฅ์ ์ง์ํ๋ ค๋ฉด GraphQL ์๋ฒ๋ฅผ ์์ ํด์ผ ํ ์ ์์ต๋๋ค. ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด๋ค ๋ฎ์ ๋งค๋ฌ๋ฆฐ ๊ณผ์ผ๋ก ์์ํ ์ ์์ต๋๊น?
(๋ฌผ๋ก WSO2๊ฐ GraphQL์ ํฐ ๊ณต์ ๋ค์ด๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ง๋ง... ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ด๋๊ฐ์์ ์์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ฃ ?)
์ข์ ํผ๋๋ฐฑ, ๋๋ ๊ฐ์ ๋๋ ;)
Op di 6 11์ 2018 om 12:06 schreef four44 [email protected] :
GraphQL์๋ ์ค์ ๋ก ๋จ ํ๋์ ๋์ ์ด ์์ผ๋ฏ๋ก ๊ทธ๋ฌํ ๋์ ์ด ์์ต๋๋ค.
myapi.com/graphql/invoice ๋ฐ graphql/product์ ๊ฐ์ ์๋์ธํธ๋
"myapi.com/graphql"๋ง ์๊ณ ๊ทธ ์ดํ์๋ ์๋ฌด ๊ฒ๋ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ง ๊ทธ๋๋ก
๋ด๋ถ์ ์ ์๋ ์์ ๊ณผ ํจ๊ป ๊ฐ ์ฟผ๋ฆฌ ๋ฐ ๋ณํ์ ๋ํด ๋์ผํ URL
์์ฒญ์ ๋ณธ๋ฌธ.๊ทธ๋ฌ๋ฉด ์ผ๋ถ API ๊ด๋ฆฌ ๊ธฐ๋ฅ์
์์ฒญ ๋ณธ๋ฌธ, graphql ์คํค๋ง์ ๋ํ ์ง์ ๋ฑ
๋จ๊ธฐ๊ฐ์ ์คํ ๋ถ๊ฐ๋ฅ : WSO2๋ ๊ฑฐ์ GraphQL์ด ๋์ด์ผ ํฉ๋๋ค.
์๋ฒ/๊ฒ์ดํธ์จ์ด ์์ฒด(๋๋ ํตํฉ).๋์ ์ด๋ค API ๊ด๋ฆฌ ๊ธฐ๋ฅ ์ด ๊ฐ๋ฅํ์ง์ ์ด์ ์ ๋ง์ถฐ์ผ ํฉ๋๋ค.
WSO2์ ์ค์ GraphQL ๊ฐ์ ํ๋ ฅ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๋ฒ/๊ฒ์ดํธ์จ์ด(์: ํค๋ ์ค์ ). ์๋ฅผ ๋ค์ด ์์ต ์ฐฝ์ถ:
GraphQL ์๋ฒ๋ ์ฟผ๋ฆฌ์ ๋ณต์ก์ฑ์ ๊ณ์ฐํ ์ ์์ต๋๋ค.
WSO2๊ฐ ์ด๊ฒ์ ๋ฒ์ญํ๋ ์๋ต์ ๋ํ HTTP ํค๋๋ก ์ ๋ณด
๊ฐ์น๋ฅผ ๊ฐ๊ฒฉ์ผ๋ก. ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ํฐ๋ง์ ์ํด GraphQL ์๋ฒ๋
JSON ํํ์ ์ฟผ๋ฆฌ๋ฅผ ๋๋จธ์ง ํํ์ (๋ชฉ๋ก)์ผ๋ก '๋ณํ'
WSO2๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ์ํด ์๋ต ํค๋์์ ์ฝ๋ ์์ฌ ๋์
๋ชจ๋ํฐ๋ง ์ ๋ณด. ๋ณด์์ ์ํด ๋์ผํ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
๋จ๊ณ: ๋จผ์ GraphQL ์๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ๋๋จธ์ง ์ฟผ๋ฆฌ๋ก ๋ณํํ๋๋ก ์์ฒญํฉ๋๋ค.
๋์ , WSO2๋ ํต๊ณผ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ค์
๋์ .์ ๋ WSO2๋ฅผ ์ฒ์ ์ ํ๊ณ ๋๋ถ๋ถ์ ๋ฌธ์๋ฅผ ์ฝ์ง ์์์ผ๋ฏ๋ก
์๋ง๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ด๋ฏธ WSO2์ ์์ ์ ์์ต๋๋ค(๋ ๊ตฌ์ฒด์ ์ผ๋ก:
์ผ๋ฐ์ ์ผ๋ก ์ ํํ REST ๋์ ์์ ํ์๋๋ WSO2์ ๊ธฐ๋ฅ
URI, ๋์ผํ ๊ธฐ๋ฅ์ ๋์ฒด ๋ฐฉ๋ฒ์ผ๋ก ํ์ํ ์ ์๋์ง ์ฌ๋ถ
(์: ํค๋ ๊ฐ ๋๋ WSO2 ์์ฒด์ ๋ํ ๋ค๋ฅธ API)). ๊ทธ๋ด ๊ฐ๋ฅ์ฑ์ด ์๋ค
์ด๋ฌํ WSO2 ์ ์ฉ์ ์ง์ํ๋ ค๋ฉด GraphQL ์๋ฒ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
ํน์ง. ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด๋ค ๋ฎ์ ๋งค๋ฌ๋ฆฐ ๊ณผ์ผ๋ก ์์ํ ์ ์์ต๋๊น?(๋ฌผ๋ก WSO2๊ฐ GraphQL์ ํฐ ๊ณต์ ๋ค์ด๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค...
ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ด๋๊ฐ์์ ์์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ฃ ?)โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/wso2/product-apim/issues/3184#issuecomment-436215537 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/Ad4tuNmWvNcpkc1Nk5y46DljcQeM9RPwks5usW0kgaJpZM4TLf2Q
.
--
๋ฐํธ ๋ฐ ๋ธ๋ฆฌ์๋ฒ ๋ฅด๊ฒ
์๋
ํ์ธ์,
๋ค์์ Apollo ์๋ฒ ๋ฌธ์์ ์ผ๋ถ์
๋๋ค.
_"HTTP ํค๋์ ๊ฐ์ด ๊ถํ ๋ถ์ฌ๊ฐ ๋ด์ฅ๋ REST API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ต์
์ด ํ๋ ๋ ์์ต๋๋ค. GraphQL ๊ณ์ธต(๋ฆฌ์กธ๋ฒ/๋ชจ๋ธ)์์ ์ธ์ฆ ๋๋ ๊ถํ ๋ถ์ฌ ์์
์ ์ํํ๋ ๋์ ํค๋๋ ์ฟ ํค๋ฅผ ํตํด REST ์๋ํฌ์ธํธ๋ก ์ ๋ฌํ๊ณ ์์
์ ์ํํ๋๋ก ํ์ญ์์ค."_
API ํค๊ฐ graphql ์ฟผ๋ฆฌ์ ๊ด๋ จ๋ ๋ชจ๋ ์๋ํฌ์ธํธ์ ๋ํด ๋์ผํ๋ฉด ํธ๋ฆญ์ ์ํํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด "ํด๊ฒฐ ๋ฐฉ๋ฒ"(API-M ์์ Apollo ์๋ฒ ๋ฐฐ์น)์ ๋ํ ์๊ฐ์ด ์์ต๋๊น?
GraphQL API๋ฅผ ๊ฒ์ํ ๋ ์ฌ์ฉ์(๊ฒ์์)์๊ฒ ์ ์๋ฅผ ๊ตฌ์ฑํ๋ ์คํค๋ง ํ์ผ์ ์
๋ก๋ํ๋๋ก ์์ฒญํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์๋ ์ด๋ฆ, ๋ฒ์ , ์ปจํ
์คํธ ๋ฑ๊ณผ ๊ฐ์ API์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ฑ์ธ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๋ API๋ฅผ ์์ฑํ ๋ GET, POST ๋ฉ์๋์ ๋ํ ๋ฆฌ์์ค๋ฅผ ์์ฑ ํ๋ผ๋ ์์ฒญ์ ๋ฐ์ง ์์ต๋๋ค .
๋ค์์ผ๋ก ๊ตฌํ ํญ์์ ์ฌ์ฉ์๊ฐ ์ ํํ๋ฉด
API ๊ด๋ฆฌ
ํ๋กํ ํ์ API
API ๊ด๋ฆฌ ์ต์ ์ ์ ํํ๋ฉด ๊ด๋ฆฌ ํญ์์ ์ค์ ์ ์ง์ ํด์ผ ํฉ๋๋ค.
API๊ฐ ๊ฒ์๋๊ฑฐ๋ ํ๋กํ ํ์ ํ๋ ํ
๋ฉ์ ธ ๋ณด์ธ๋ค
@wasuradananjith ๋ํ GraphQL API๊ฐ ์์ ์์ ์ด๋ป๊ฒ ๋ณด์ด๋์ง ๊ฒ์ํ ์ ์์ต๋๊น? ์๋ง๋ ์คํค๋ง์ ํจ๊ป API ํฌํธ์์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ต์ํ Apollo ๋ GraphQL ๋ฐ์ดํฐ ์์ฒญ์ GET ์ฌ์ฉ์ ์ง์ํฉ๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
WSO2 APIM 3.0.0 ๋ฆด๋ฆฌ์ค์ ๊ด๋ จ๋ Graphql ์ง์ ์ ๋ณด ๋ฐ PR์ ์ฐพ์ผ์ญ์์ค. ์๋ก์ด React ๊ธฐ๋ฐ UI์์ WSO2 APIM 3.0.0์ ์ถ์ํ ์์ ์ด๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ์๋ก์ด UI์ ์คํฌ๋ฆฐ์ท์ ์ถ๊ฐํ์ต๋๋ค.
API ๊ฒ์์
์ค๋ช
:
API ์์ฑ์๊ฐ API ๊ฒ์์์ graphQL ์คํค๋ง๋ฅผ ์
๋ก๋ํ๋ฉด ์ฟผ๋ฆฌ ๋ฐ ๋ณํ ์์
์ด ๊ฒ์์ ํฌํธ์ ๋์ด๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ทธ/๊ทธ๋
๋ ๋ฒ์, ์กฐ์ ์ ์ฑ
, ์์
์ ๋ํ ๋ณด์ ํ์ฑํ/๋นํ์ฑํ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
๊ฒ์์์ ๊ธฐ๋ฅ.
API ์คํ ์ด
๊ฒ์์ ์ฌ์ฉ์๊ฐ API๋ฅผ ๊ฒ์ํ๋ฉด SDL ์คํค๋ง์ ๋ชจ๋ ์์
์ด ๊ฐ๋ฐ์ ํฌํธ์ ์ฑ์์ง๊ณ ์คํค๋ง ํ์ผ๋ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ GET ๋ฐ POST ์์ฒญ ์ ํ์ด ์๋ Tryout ์ฝ์์ ์ฌ์ฉํ์ฌ ์์
์ ํ
์คํธํ ์ ์์ต๋๋ค.
์์ ์ ๊ธฐ๋ฅ.
์กฐํ์ ์คํฌ๋ฆฐ์ท
์คํค๋ง ํ์ด์ง ์
๋ก๋
๋ค์์ ํด๋ฆญํ๊ณ ์์์ ์ฑ์ ์ธ๋ถ์ ๋ณด๋ฅผ ์
๋ ฅํ์ธ์.
GraphQL API ๊ฐ์ ํ์ด์ง ์์ฑ
GraphQL API ์์
๋ณด๊ธฐ
์
๋ก๋๋ ์คํค๋ง ์ ์
๋ฒ์ ์ถ๊ฐ/์
๋ฐ์ดํธ, ์กฐ์ , ๋ณด์
๋งค์ฅ ์ด์ ๊ฐ์
์คํค๋ง ๋ค์ด๋ก๋
๊ฐ๋ฐ์ ์ฝ์
Graphql API ํธ์ถ ์๊ฐ
๊ถํ ๋ถ์ฌ - API ์์ฑ์๋ ๊ฒ์์์์ ์์
๋ณ๋ก ๋ฒ์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
APP ์ฌ์ฉ์๊ฐ ์ฟผ๋ฆฌ/๋ณ์ด(์ฝ๊ธฐ ์ ์ฉ/์ฝ๊ธฐ-์ฐ๊ธฐ) ์์
์ผ๋ก graphQL API๋ฅผ ํธ์ถํ๋ฉด API ๊ฒ์ดํธ์จ์ด๋ ํ์ด๋ก๋์ ํฌํจ๋ ์์
์ ์๋ณํ๊ณ ์ฌ์ฉ์์ ํ ํฐ ๋ฒ์์ ๋ฐ๋ผ ์ผ์น์ํต๋๋ค. ํ์ด๋ก๋์ ์ฌ๋ฌ ๋ฒ์๊ฐ ์๋ ์ฌ๋ฌ ์์
์ด ํฌํจ๋ ๊ฒฝ์ฐ ํ ํฐ์๋ ์์
๋ฒ์์ ์ต์ํ ํตํฉ์ด ์์ด์ผ ํฉ๋๋ค.
์:- ์ฟผ๋ฆฌ์ ๋ค์์ด ํฌํจ๋ ๊ฒฝ์ฐ (์์
A - ๋ฒ์ 1, ์์
B - ๋ฒ์ 2)
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ ์ฌ์ฉ์์ ํ ํฐ์๋ ๋ ๋ฒ์(scope1 ๋ฐ scope2)๊ฐ ๋ชจ๋ ์์ด์ผ ํฉ๋๋ค.
๋ณด์ - API Creator๋ ๊ฒ์์์ ์์
๋ณ๋ก ๋ณด์์ ํ์ฑํ/๋นํ์ฑํํ ์ ์์ต๋๋ค.
์ฟผ๋ฆฌ ์์ฒญ์ ์ฌ๋ฌ ์์
์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ ๋ณด์์ ์์
๋ณด์์ ํตํฉ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ํ๋์ ์์
์ด ๋ณด์์ ํ์ฑํํ ๊ฒฝ์ฐ ์ ์ฒด ์์ฒญ์ ๋ํ ๋ณด์์ ์ง์ํฉ๋๋ค.
์กฐ์ - API ์์ฑ์๋ ๊ฒ์์์ ์์
๋ณ๋ก ์กฐ์ ์ ์ฑ
์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ฟผ๋ฆฌ ์์ฒญ์ด ์ฌ๋ฌ ์์
์ด๋ฆ๊ณผ ํจ๊ป ์ ๊ณต๋๋ ๊ฒฝ์ฐ ์ ํ ์ ์ฑ
์ด ์์
๋ณ๋ก ์ ์ฉ๋ฉ๋๋ค. ์์ฒญ์ ํ ์์
์ด๋ฆ์ด ํด๋น ์ ์ฑ
์ ๋ฐ๋ผ ์กฐ์ ๋ ๊ฒฝ์ฐ ์ ์ฒด ์์ฒญ์ด ์กฐ์ ๋ ์์
์ ๊ฒฝ์ฐ ์กฐ์ ๋ฉ๋๋ค.
PR์ https://github.com/wso2/carbon-apimgt/pull/6784์์ ์ฐพ์ ์ ์์ต๋๋ค.
์ด์ ๋ํ ๊ทํ์ ์๊ฐ๊ณผ ๊ท์คํ ์ ๋ณด๋ฅผ ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ฌ ํด์!
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
WSO2 APIM 3.0.0 ๋ฆด๋ฆฌ์ค์ ๊ด๋ จ๋ Graphql ์ง์ ์ ๋ณด ๋ฐ PR์ ์ฐพ์ผ์ญ์์ค. ์๋ก์ด React ๊ธฐ๋ฐ UI์์ WSO2 APIM 3.0.0์ ์ถ์ํ ์์ ์ด๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ์๋ก์ด UI์ ์คํฌ๋ฆฐ์ท์ ์ถ๊ฐํ์ต๋๋ค.
API ๊ฒ์์
์ค๋ช :
API ์์ฑ์๊ฐ API ๊ฒ์์์ graphQL ์คํค๋ง๋ฅผ ์ ๋ก๋ํ๋ฉด ์ฟผ๋ฆฌ ๋ฐ ๋ณํ ์์ ์ด ๊ฒ์์ ํฌํธ์ ๋์ด๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ทธ/๊ทธ๋ ๋ ๋ฒ์, ์กฐ์ ์ ์ฑ , ์์ ์ ๋ํ ๋ณด์ ํ์ฑํ/๋นํ์ฑํ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.๊ฒ์์์ ๊ธฐ๋ฅ.
1. Create a GraphQL APIs by importing GraphQL SDL schema 2. Validate the schema and extract its operations from the schema definition 3. Retrieve/Import/Download SDL schema at the publisher. 4. Shows operations instead of resources 5. Add/Update throttling,scopes,security against operations 6. View graphQL APIs labeling 'GRAPHQL' at API Listing Page
API ์คํ ์ด
๊ฒ์์ ์ฌ์ฉ์๊ฐ API๋ฅผ ๊ฒ์ํ๋ฉด SDL ์คํค๋ง์ ๋ชจ๋ ์์ ์ด ๊ฐ๋ฐ์ ํฌํธ์ ์ฑ์์ง๊ณ ์คํค๋ง ํ์ผ๋ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ GET ๋ฐ POST ์์ฒญ ์ ํ์ด ์๋ Tryout ์ฝ์์ ์ฌ์ฉํ์ฌ ์์ ์ ํ ์คํธํ ์ ์์ต๋๋ค.์์ ์ ๊ธฐ๋ฅ.
1. View graphQL APIs labeling 'GRAPHQL' at API Listing Page 2. View operations for particular API 3. Able to download SDL schema retrieving schema 4. Provide developer console with GET and POST to invoke the API
์กฐํ์ ์คํฌ๋ฆฐ์ท
1. Create GrpahQL API page
1. Upload schema page
1. Click next and populate a form to fill details
1. Created GraphQL API overview page
1. GraphQL API operation view
1. Uploaded schema definition
1. Add/Update scopes,throttling,security
1. Store operation overview
1. Schema download
1. Developer Console
Graphql API ํธ์ถ ์๊ฐ
1. Authorization - API Creator can add scopes per operations at the publisher When the APP user invokes the graphQL API with query/mutation (read-only/ read-write) operation, API gateway will identify which operations are containing in the payload and match them according to the token scope of the user. If the payload contains multiple operations with multiple scopes, the token should have at least a union of the operation scopes. Eg:- Let's say when a query contains, (operation A - scope 1, operation B - scope 2) the token of the user who is going to execute the query should have both scopes (scope1 and scope2) 2. Security - API Creator can enable/disable security per operations at the publisher. When a query request comes with multiple operation names, security has been considered as the union of the operations security. If one operation has been enabled the security, we support security for whole request. 3. Throttling - API Creator can add throttling policy per operations at the publisher. When a query request comes with multiple operation names, throttle policies will apply per operation. If one operation name of the request has been throttled out according to its policy, the whole request is going to be throttled out in the case of throttled operation.
PR์ wso2/carbon-apimgt#6784 ์์ ์ฐพ์ ์ ์์ต๋๋ค.
* At this level, we are not going to support on inspecting and analyzing queries, support API MicroGateway for GraphQL endpoints, support Graphql subscriptions with the inbound endpoints(Web socket APIs), Include an extra widget for Graphql APIs to see the count of operation invocation based on operation types, etc. Therefore, new issues have been opened to add relevant support for our future roadmap. 1. #5432 2. #5431 3. [wso2/product-microgateway#773](https://github.com/wso2/product-microgateway/issues/773) 4. [wso2/analytics-solutions#310](https://github.com/wso2/analytics-solutions/issues/310)
์ด์ ๋ํ ๊ทํ์ ์๊ฐ๊ณผ ๊ท์คํ ์ ๋ณด๋ฅผ ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ฌ ํด์!
์๋
ํ์ธ์ @HiranyaKavishani ,
์ด ์ง์์ ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก wso apim์ ํตํด ๊ธฐ์กด API์ ๋ํด ์ํํ๋ ๊ฒ์ฒ๋ผ APIM์ ํตํด ๊ธฐ์กด GraphQL API ๊ฒ์๋ฅผ ๋์
ํฉ๋๊น?
๋ํ ๊ธฐ๋ฅ์ ํ ์คํธํ ๋ฒ ํ/์ํ ๋ฆด๋ฆฌ์ค๊ฐ ์์ต๋๊น?
๊ฐ์ฌ ํด์ !
์๋ ํ์ธ์ @arvindkannan ,
๊ธฐ์กด Graphql API์ ๊ฒฝ์ฐ ๋๋จธ์ง API์ ๋น๊ตํ ๋ graphql์ด ์ง์ํ๋ ๋ฐฉ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ API๋ฅผ ๋ค์ ์์ฑํ๊ณ ๋ค์ ๊ฒ์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๊ฒ ํ ๊ฒฝ์ฐ ๊ธฐ์กด ๊ณ ๊ฐ์๊ฒ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ๊ธฐ์กด ํ ํฐ๊ณผ ๊ธฐ์กด URL์ด ๋ณ๊ฒฝ๋์ง ์๋๋ก ํด์ผ ํฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ 10์์ ์ถ์๋ APIM 3.0.0์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ฌ ํด์!
APIM 3.0.0 ๋ฒ ํ ๋ฒ์ ์์ ์ด ์ง์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ฌธ์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๊ตฌ ์ฌํญ ๋ถ์
์ ์๋ ์ ๊ทผ ๋ฐฉ์
GraphQL API๋ฅผ ๊ฒ์ํ ๋ ์ฌ์ฉ์(๊ฒ์์)์๊ฒ ์ ์๋ฅผ ๊ตฌ์ฑํ๋ ์คํค๋ง ํ์ผ์ ์ ๋ก๋ํ๋๋ก ์์ฒญํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์๋ ์ด๋ฆ, ๋ฒ์ , ์ปจํ ์คํธ ๋ฑ๊ณผ ๊ฐ์ API์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ฑ์ธ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๋ API๋ฅผ ์์ฑํ ๋ GET, POST ๋ฉ์๋์ ๋ํ ๋ฆฌ์์ค๋ฅผ ์์ฑ ํ๋ผ๋ ์์ฒญ์ ๋ฐ์ง ์์ต๋๋ค .
๋ค์์ผ๋ก ๊ตฌํ ํญ์์ ์ฌ์ฉ์๊ฐ ์ ํํ๋ฉด
API ๊ด๋ฆฌ
ํ๋กํ ํ์ API
API ๊ด๋ฆฌ ์ต์ ์ ์ ํํ๋ฉด ๊ด๋ฆฌ ํญ์์ ์ค์ ์ ์ง์ ํด์ผ ํฉ๋๋ค.
API๊ฐ ๊ฒ์๋๊ฑฐ๋ ํ๋กํ ํ์ ํ๋ ํ