Coder Social home page Coder Social logo

kk9599 / apollo-server Goto Github PK

View Code? Open in Web Editor NEW

This project forked from apollographql/apollo-server

0.0 1.0 0.0 11.22 MB

๐ŸŒ GraphQL server for Express, Connect, Hapi, Koa and more

Home Page: https://www.apollographql.com/docs/apollo-server/

License: MIT License

JavaScript 1.34% TypeScript 98.50% Shell 0.16%

apollo-server's Introduction

Apollo Server

GraphQL Server for Express, Koa, Hapi, Lambda, and more.

npm version Build Status Join the community on Spectrum

Apollo Server is a community-maintained open-source GraphQL server. It works with pretty much all Node.js HTTP server frameworks, and we're happy to take PRs for more! Apollo Server works with any GraphQL schema built with GraphQL.js, so you can build your schema with that directly or with a convenience library such as graphql-tools.

Principles

Apollo Server is built with the following principles in mind:

  • By the community, for the community: Apollo Server's development is driven by the needs of developers.
  • Simplicity: By keeping things simple, Apollo Server is easier to use, easier to contribute to, and more secure.
  • Performance: Apollo Server is well-tested and production-ready.

Anyone is welcome to contribute to Apollo Server, just read CONTRIBUTING.md, take a look at the roadmap and make your first PR!

Getting started

Apollo Server is super easy to set up. Just npm install apollo-server-<integration>, write a GraphQL schema, and then use one of the following snippets to get started. For more info, read the Apollo Server docs.

There are two installation patterns:

  • Standalone: To get started without integrating with an existing web framework, use the apollo-server package.
  • Integrations: For applications which have already use a web framework (e.g. express, koa, hapi, etc.), use the appropriate Apollo Server integration package.

Installation: Standalone

In a new project, install the apollo-server and graphql dependencies using:

npm install apollo-server graphql

Then, create an index.js which defines the schema and its functionality (i.e. resolvers):

const { ApolloServer, gql } = require('apollo-server');

// The GraphQL schema
const typeDefs = gql`
  type Query {
    "A simple type for getting started!"
    hello: String
  }
`;

// A map of functions which return data for the schema.
const resolvers = {
  Query: {
    hello: () => 'world',
  },
};

const server = new ApolloServer({
  typeDefs,
  resolvers,
});

server.listen().then(({ url }) => {
  console.log(`๐Ÿš€ Server ready at ${url}`);
});

Due to its human-readability, we recommend using schema-definition language (SDL) to define a GraphQL schema but a GraphQLSchema object from graphql-js can also be specified in place of typeDefs and resolvers using the schema property:

const server = new ApolloServer({
  schema: ...
});

Finally, start the server using node index.js and open your web-browser to the URL which is output on the console.

For more details, check out the Apollo Server Getting Started guide of the documentation, or for a more comprehensive understanding, see the fullstack tutorial.

For questions, the Apollo commuinty on Spectrum.chat is a great place to get assistance.

Installation: Integrations

While the standalone installation above can be used without making a decision about which web framework to use, the Apollo Server integration packages are paired with specific web frameworks (e.g. Express, Koa, hapi).

The following web frameworks have Apollo Server integrations, and each of these linked integrations has its own installation instructions and examples on its package README.md:

See the links above for more details on a specific integration.

Context

A request context is available for each request. When context is defined as a function, it will be called on each request and receive an object containing a req property which represents the request.

By returning an object from the context function, it will be available as the third positional paramter of the resolvers:

new ApolloServer({
  typeDefs,
  resolvers: {
    Query: {
      books: (parent, args, context, info) => {
        console.log(context.myProperty); // Will be `true`!
        return books;
      },
    }
  },
  context: async ({ req }) => {
    return {
      myProperty: true
    };
  },
})

Documentation

The Apollo Server documentation contains many of the details which are necessary to get started with both GraphQL and Apollo Server.

The raw source content of that documentation is available within the docs/ directory of this monorepo, but the Edit on GitHub buttons at the bottom of each page can be used to contribute suggestions or improvements to the published content.

Development

If you want to develop or contribute to Apollo Server itself, we suggest the following:

  • Fork this repository

  • Install the Apollo Server project in your computer

git clone https://github.com/[your-user]/apollo-server
cd apollo-server
npm install
cd packages/apollo-server-<integration>/
npm link
  • Install your local Apollo Server in other App
cd ~/myApp
npm link apollo-server-<integration>

For more help with contributing, visit the Contributing channel on the Apollo community in Spectrum.chat.

Maintainers

apollo-server's People

Contributors

abernix avatar addityasingh avatar benjamn avatar cheapsteak avatar clarencenpy avatar dotansimha avatar dxcx avatar fabsrc avatar freiksenet avatar glasser avatar greenkeeper[bot] avatar greenkeeperio-bot avatar helfer avatar hribb avatar hwillson avatar jakedawkins avatar lekterable avatar martijnwalraven avatar megamaddu avatar neoreyad avatar nicolaslopezj avatar nnance avatar olistic avatar peggyrayzis avatar renovate-bot avatar renovate[bot] avatar rkorrelboom avatar timneutkens avatar unicodeveloper avatar urigo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.