---
# System prepended metadata

title: GraphQL Survey

---

# GraphQL Survey

## Client-side 視角
### APPCODA 上的文章

https://www.appcoda.com.tw/graphql/

短評：GraphQL 使用情境的描述以及優缺點的論述可部份參考，嗯，僅供參考。


>"到這邊我們要釐清一個重點，GraphQL 並不是一個後端或前端的 framework，而是一套規範好的語法介面，讓前後端可以根據這套規範來溝通。就好像我們會用 RESTful 當成 API 的設計準則，我們也可以使用 GraphQL 來取代 RESTful，當成是我們 API 的設計準則，定好這樣的準則之後，前後端會各自針對這個規範，實做出能夠符合這樣規範的程式。"

這一段描述大致上沒錯，但之於前面的段落來說就有點自打嘴巴了。GraphQL 也就是一套溝通語言的規範，不是 framework。在這一段之前，原作者把使用 GraphQL 之後該發生的事情講得很理所當然，但前提卻都略過沒有提到 (或說還沒有提到吧)，也就是：Server 端也有一些事情要先做好，很多的「理所當然」才會成立。

### 看來可考慮使用的 Client-side 套件

#### Official - language support
https://graphql.org/code/#javascript


## Server-side 實作

### GraphQL
#### Official 

https://graphql.org/

#### Language Support 

https://graphql.org/code/ 
官方推薦各套語言實作的開發輔助工具，不需全靠自己重新發明輪子

#### PHP 套件
https://graphql.org/code/#php


### PHP套件: webonyx/graphql-php

#### Repository & Documents
- https://webonyx.github.io/graphql-php/
- https://packagist.org/packages/webonyx/graphql-php

#### Examples
- https://github.com/webonyx/graphql-php/tree/master/examples

**01-blog** 這一個範例是比較複雜的。(資料分層較多、關聯較多時，實作上的複雜度可能就至少如同這一個範例)


#### JavaScript 

相對多人推薦 - Apollo Server
https://www.apollographql.com/docs/apollo-server/


