Xier
2 min readMar 28, 2018

มาเป็นสาวก Apollo GraphQL กันนะ (พูดถึงแบบคร่าวๆ)

ช่วงนี้ได้ดูเกี่ยวกับ GraphQL ก็ไปเจอ Apollo เลยได้ไปอ่านคร่าวๆแล้วมันดูน่าสนใจมาก อยากจะขายวิญญาณให้เลย วันนี้เลยอยากจะพูดถึงผลิตภัณฑ์หลายๆอย่างจากของ Apollo ไม่ว่าจะเป็น Client, Engine, Server กันสักเล็กน้อย

เริ่มกันที่ Server กันก่อน

จริงๆแล้ว graphql server มีอยู่แล้วแหละไม่จำเป็นต้องใช้ apollo ก็ได้ แต่ว่ามันก็จะเหมือนเขียน php เปล่าๆไม่มี framework นั่นแหละ feature ที่ apollo มีนั้นเยอะแยะมากไม่ว่าจะเป็นเรื่องการ mock, tracing, cache control, subscription และหลายอย่างมากๆ

ต่อไปก็ Engine

มันจะเป็นเครื่องมือจะช่วยดูแล graphql server ของเรา จะคอยส่งข้อมูลของ server เราไปยัง Engine เพื่อไว้ดู error tracing, cache, trend, query tracing แสดงเป็น dashboard เก๋ๆสวยงาม

อันนี้จริงๆไม่จำเป็นต้องใช้คู่กับ apollo ก็ได้นะใน doc จะมีสอนการใช้กับอย่างอื่น

แน่นอนว่าฟรีแค่ 1 ล้าน request แรกถ้าถัดจากนั้น ล้านละ 9$ นะ

ภาพตัวอย่าง dashbaord Engine

สุดท้ายก็ Client

จริงๆแล้วฝั่ง Client เนี่ยค่อนข้างจะแพร่หลายมีทั้งบน iOS, Android, React, Vue, Angular, Ember และอีกมากมายพร้อมสำหรับการนำไปใช้ โดย React Apollo 2.1 นี่ก็พึ่งจะปล่อยออกมาไม่นาน ก็จะมีอย่าง Component พิเศษอย่าง Query, Mutation

import gql from "graphql-tag";
import { Query } from "react-apollo";

const GET_DOGS = gql`
{
dogs {
id
breed
}
}
`;

const Dogs = ({ onDogSelected }) => (
<Query query={GET_DOGS}>
{({ loading, error, data }) => {
if (loading) return "Loading...";
if (error) return `Error! ${error.message}`;

return (
<select name="dog" onChange={onDogSelected}>
{data.dogs.map(dog => (
<option key={dog.id} value={dog.breed}>
{dog.breed}
</option>
))}
</select>
);
}}
</Query>
);

อันนี้เป็นตัวอย่างโค้ดจากในเว็บนั่นแหละ

อื่นๆ

นอกเหนือจากนี้ยังมี Devtool อื่นๆที่จะช่วยในการ dev ของเราอีกนะ eslint-plugin-graphql, apollo-codegen, Apollo Client Devtools

อะไรต่อ?

ใครที่เริ่มจะสนใจอยากจะลองศึกษาเพิ่มเติมก็ลองดูที่เว็บ https://www.howtographql.com มีให้เลือกแนวทาง stack หรือ combo มากมาย และกลุ่ม GraphQL Thailand อันนี้มีหัวหน้าลัทธิโพสข่าวสารหรือแนวทางตลอดเป็นอะไรที่ดีมาก

หลังจากนี้น่าจะได้เขียนเกี่ยวกับ GraphQL มากขึ้นนะฝากติดตามกันด้วยนะครับ

No responses yet