Delbert  Ferry

Delbert Ferry

1622109034

Introduction to GraphQL

Learn GraphQL by [Arunoda Susiripala] is an excellent 10-part tutorial that teaches you the basics of GraphQL. It requires you to log in with your github account to get all the content, but it’s definitely worth it, because it’s hands down the best way to learn GraphQL at the moment.

It’s worth noting that parts 1 to 6 are are about writing GraphQL queries, which are defined by the GraphQL spec, but parts 7 through 10 are about express-graphql, an implementation of a GraphQL server in Javascript. That means that schemas for other GraphQL servers have to be written in a different way!

#graphql #introduction

What is GEEK

Buddha Community

Introduction to GraphQL

Elm Graphql: Autogenerate Type-safe GraphQL Queries in Elm

dillonkearns/elm-graphql  

Why use this package over the other available Elm GraphQL packages? This is the only one that generates type-safe code for your entire schema. Check out this blog post, Type-Safe & Composable GraphQL in Elm, to learn more about the motivation for this library. (It's also the only type-safe library with Elm 0.18 or 0.19 support, see this discourse thread).

I built this package because I wanted to have something that:

  1. Gives you type-safe GraphQL queries (if it compiles, it's valid according to the schema),
  2. Creates decoders for you in a seamless and failsafe way, and
  3. Eliminates GraphQL features in favor of Elm language constructs where possible for a simpler UX (for example, GraphQL variables & fragments should just be Elm functions, constants, lets).

See an example in action on Ellie. See more end-to-end example code in the examples/ folder.

Overview

dillonkearns/elm-graphql is an Elm package and accompanying command-line code generator that creates type-safe Elm code for your GraphQL endpoint. You don't write any decoders for your API with dillonkearns/elm-graphql, instead you simply select which fields you would like, similar to a standard GraphQL query but in Elm. For example, this GraphQL query

query {
  human(id: "1001") {
    name
    homePlanet
  }
}

would look like this in dillonkearns/elm-graphql (the code in this example that is prefixed with StarWars is auto-generated)

import Graphql.Operation exposing (RootQuery)
import Graphql.SelectionSet as SelectionSet exposing (SelectionSet)
import StarWars.Object
import StarWars.Object.Human as Human
import StarWars.Query as Query
import StarWars.Scalar exposing (Id(..))


query : SelectionSet (Maybe HumanData) RootQuery
query =
    Query.human { id = Id "1001" } humanSelection


type alias HumanData =
    { name : String
    , homePlanet : Maybe String
    }


humanSelection : SelectionSet HumanData StarWars.Object.Human
humanSelection =
    SelectionSet.map2 HumanData
        Human.name
        Human.homePlanet

GraphQL and Elm are a perfect match because GraphQL is used to enforce the types that your API takes as inputs and outputs, much like Elm's type system does within Elm. elm-graphql simply bridges this gap by making your Elm code aware of your GraphQL server's schema. If you are new to GraphQL, graphql.org/learn/ is an excellent way to learn the basics.

After following the installation instructions to install the @dillonkearns/elm-graphql NPM package and the proper Elm packages (see the Setup section for details). Once you've installed everything, running the elm-graphql code generation tool is as simple as this:

npx elm-graphql https://elm-graphql.herokuapp.com --base StarWars --output examples/src

If headers are required, such as a Bearer Token, the --header flag can be supplied.

npx elm-graphql https://elm-graphql.herokuapp.com --base StarWars --output examples/src --header 'headerKey: header value'

Learning Resources

There is a thorough tutorial in the SelectionSet docs. SelectionSets are the core concept in this library, so I recommend reading through the whole page (it's not very long!).

The examples/ folder is another great place to start.

If you want to learn more GraphQL basics, this is a great tutorial, and a short read: graphql.org/learn/

My Elm Conf 2018 talk goes into the philosophy behind dillonkearns/elm-graphql

Types Without Borders Elm Conf Talk

(Skip to 13:06 to go straight to the dillonkearns/elm-graphql demo).

If you're wondering why code is generated a certain way, you're likely to find an answer in the Frequently Asked Questions (FAQ).

There's a very helpful group of people in the #graphql channel in the Elm Slack. Don't hesitate to ask any questions about getting started, best practices, or just general GraphQL in there!

Setup

dillonkearns/elm-graphql generates Elm code that allows you to build up type-safe GraphQL requests. Here are the steps to setup dillonkearns/elm-graphql.

Add the dillonkearns/elm-graphql elm package as a dependency in your elm.json. You will also need to make sure that elm/json is a dependency of your project since the generated code has lots of JSON decoders in it.

elm install dillonkearns/elm-graphql
elm install elm/json

Install the @dillonkearns/elm-graphql command line tool through npm. This is what you will use to generate Elm code for your API. It is recommended that you save the @dillonkearns/elm-graphql command line tool as a dev dependency so that everyone on your project is using the same version.

npm install --save-dev @dillonkearns/elm-graphql
# you can now run it locally using `npx elm-graphql`,
# or by calling it through an npm script as in this project's package.json

Run the @dillonkearns/elm-graphql command line tool installed above to generate your code. If you used the --save-dev method above, you can simply create a script in your package.json like the following:

{
  "name": "star-wars-elm-graphql-project",
  "version": "1.0.0",
  "scripts": {
    "api": "elm-graphql https://elm-graphql.herokuapp.com/api --base StarWars"
  }

With the above in your package.json, running npm run api will generate dillonkearns/elm-graphql code for you to call in ./src/StarWars/. You can now use the generated code as in this Ellie example or in the examples folder.

Subscriptions Support

You can do real-time APIs using GraphQL Subscriptions and dillonkearns/elm-graphql. Just wire in the framework-specific JavaScript code for opening the WebSocket connection through a port. Here's a live demo and its source code. The demo server is running Elixir/Absinthe.

Contributors

Thank you Mario Martinez (martimatix) for all your feedback, the elm-format PR, and for the incredible logo design!

Thank you Mike Stock (mikeastock) for setting up Travis CI!

Thanks for the reserved words pull request @madsflensted!

A huge thanks to @xtian for doing the vast majority of the 0.19 upgrade work! :tada:

Thank you Josh Adams (@knewter) for the code example for Subscriptions with Elixir/Absinthe wired up through Elm ports!

Thank you Romario for adding OptionalArgument.map!

Thank you Aaron White for your pull request to improve the performance and stability of the elm-format step! 🎉

Roadmap

All core features are supported. That is, you can build any query or mutation with your dillonkearns/elm-graphql-generated code, and it is guaranteed to be valid according to your server's schema.

dillonkearns/elm-graphql will generate code for you to generate subscriptions and decode the responses, but it doesn't deal with the low-level details for how to send them over web sockets. To do that, you will need to use custom code or a package that knows how to communicate over websockets (or whichever protocol) to setup a subscription with your particular framework. See this discussion for why those details are not handled by this library directly.

I would love to hear feedback if you are using GraphQL Subscriptions. In particular, I'd love to see live code examples to drive any improvements to the Subscriptions design. Please ping me on Slack, drop a message in the #graphql channel, or open up a Github issue to discuss!

I would like to investigate generating helpers to make pagination simpler for Connections (based on the Relay Cursor Connections Specification). If you have ideas on this chime in on this thread.

See the full roadmap on Trello.


Author: dillonkearns
Source Code: https://github.com/dillonkearns/elm-graphql
License: View license

#graphql 

Delbert  Ferry

Delbert Ferry

1622109034

Introduction to GraphQL

Learn GraphQL by [Arunoda Susiripala] is an excellent 10-part tutorial that teaches you the basics of GraphQL. It requires you to log in with your github account to get all the content, but it’s definitely worth it, because it’s hands down the best way to learn GraphQL at the moment.

It’s worth noting that parts 1 to 6 are are about writing GraphQL queries, which are defined by the GraphQL spec, but parts 7 through 10 are about express-graphql, an implementation of a GraphQL server in Javascript. That means that schemas for other GraphQL servers have to be written in a different way!

#graphql #introduction

Delbert  Ferry

Delbert Ferry

1622105190

How to use GraphQL with Javascript – GraphQL.js tutorial

One of the fastest ways to get up and running with GraphQL is to install Apollo Server as middleware on your new or existing HTTP server.

In this short post, we demonstrate how to use Apollo Server to create a GraphQL server with Express.js using the [apollo-server-express] package. At the end, we’ll discuss the tradeoffs of this approach.

#graphql #javascript #graphql.js #graphql.js tutorial

Lindsey  Koepp

Lindsey Koepp

1594688114

AWS Amplify and GraphQL— an Introduction

Amplify is a product from AWS that has two aspects to it:

  • Amplify framework which as an open-source framework which provides a CLIlibraries to integrate frontend code with the backend and UI components to build fullstack iOS, Android, Web, and React Native apps. You can configure and integrate the underlying cloud services like AWS AppSync (Managed GraphQL, offline data sync), Amazon Cognito (Authentication, Authorization, User Management, MFA), Amazon Pinpoint (Analytics, Customer Engagement), AWS Lambda (GraphQL Resolver, Business logic), Amazon S3 (Storage), or Amazon Lex (Conversation Bots) directly from your command line minimizing the time required to set-up and manage your back-end services.
  • The Amplify Console provides a Git-based workflow for hostingfullstack serverless web apps with continuous deployment.

Image for post

It also supports static-site generators like **Gatsby, Eleventy, Hugo, VuePress, **and Jekyll. You can deploy serverless backends with GraphQL/REST APIsauthenticationanalytics, and storage created by the Amplify CLI on the same commit as your frontend code.

Important: You can use Amplify console to deploy and host Single Page App (SPA) frontends and static websites, without using the Amplify Framework.

GraphQL

Amplify supports GraphQL, which is yet another API technology just like REST, SOAP, gRPC, Thrift, OpenAPI (Swagger) etc. First of all, GraphQL is not a Graph database query language. GraphQL is a query language for your APIs which offers a strong type system, great tools for **domain modelling **and many other features.

Components

  • **Schema — **Each GraphQL API is defined by a single GraphQL schema. A GraphQL server’s type system is referred to as that server’s schema. All data operations are validated against this schema. GraphQL comes with a set of default scalar types out of the box (Int, Float, String, Boolean, ID), allows you to create own scalar / object types and supports interfacesunion and list types.
  • **Data Source — **This is the source of the data for the GraphQL API. The data source could be of any type, as long as one is authorized to read from it.
  • Resolvers — Resolvers are the components that connect with the data source and are able to map a schema with it.

Note: GraphQL isn’t tied to any specific database or storage engine and is instead backed by your existing code and data.

In GraphQL, you define certain types as part of domain modelling which are part of your schema. In the following image, the “!” at the end of the type means that the field is required or Not-Null.

#graphql #full-stack #aws-amplify #serverless #aws #graphql

Introduction to GraphQL #1

Reading Time: 2 minutes
GraphQL is a query language to retrieve data from a server created by Facebook in 2012 and was open-sourced in 2015. It is basically an alternative to REST or SOAP. It provides an understandable description of data and gives more power to the Client to ask for the exact data that they need. It leverages two types of requests.

  1. Queries which simply retrieve data from the server
  2. Mutations changing the data.

Let’s jump to the comparison of GraphQL with SOAP and REST. Although all three are used to create API architecture. But on the basis of their nature, they are quite different. SOAP is the protocol whereas REST is an architectural style and the GraphQL is a query language.

#graphql #introduction