Rust Graphql Api Boilerplate Save

A Boilerplate of GraphQL API built in Rust + Warp + Juniper + Diesel

Project README

Rust GraphQL API Boilerplate

This is a boilerplate built with Rust.

Features

  • DB migration with Diesel
  • Sign up
  • Sign in
  • Change password
  • Profile Update
  • JSON web token authentication

Stacks

  • Rust
  • Warp - Web server framework
  • Juniper - GraphQL library
  • Diesel - ORM
  • DB: Postgres
  • JSON Web Token : Authentication

Run

Without Docker

$ git clone https://github.com/mattdamon108/rust_graphql_api_boilerplate
$ cd rust_graphql_api_boilerplate
$ echo DATABASE_URL=postgres://username:password@localhost/rust_boilerplate > .env
$ diesel setup
$ diesel migration run
$ cargo run

Build with Docker

$ docker build -t rust_gql .
$ docker run --rm -d -p 3030:3030 --name running_rust_gql rust_gql

Change the listening port from 127.0.0.1 to 0.0.0.0 in main.rs. Because rust GraphQL API in docker container needs to listen to 0.0.0.0 instead of local interface in order for host to access to the API.

GraphiQL : connect to 127.0.0.1:3030 with browser

Schema

Query

query {
  getMyProfile {
    ok
    error
    user {
      id
      email
      first_name
      last_name
      bio
      avatar
    }
  }
}

Note: JSON web token is needed to be sent as authorization in header.

Mutation

Sign Up

mutation {
  signUp(
    email: "[email protected]"
    password: "12345678"
    firstName: "graphql"
    lastName: "rust"
  ) {
    ok
    error
    user {
      id
      email
      first_name
      last_name
      bio
      avatar
    }
  }
}

Sign In

mutation {
  signIn(email: "[email protected]", password: "12345678") {
    token
  }
}

Change Password

Note: JSON web token is needed to be sent as authorization in header.

mutation {
  changePassword(password: "87654321") {
    ok
    error
    user {
      id
      email
      first_name
      last_name
      bio
      avatar
    }
  }
}

Change Profile

Note: JSON web token is needed to be sent as authorization in header.

mutation {
  changeProfile(bio: "Rust fan") {
    ok
    error
    user {
      id
      email
      first_name
      last_name
      bio
      avatar
    }
  }
}

Next to do

  • User Sign up
  • Hash User Password - with bcrypt crate
  • User Sign in based on Token authentication
  • User profile Update
  • ERROR HANDLING (important!)
  • Deploy using Docker after compile
  • Optimizing the multithread

References

Open Source Agenda is not affiliated with "Rust Graphql Api Boilerplate" Project. README Source: mununki/rust_graphql_api_boilerplate
Stars
95
Open Issues
0
Last Commit
8 months ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating