- Notifications
You must be signed in to change notification settings - Fork5
Clean boilerplate for graphql services using actix-web, rhai, async-graphql, surf, rbatis, graphql-client, handlebars-rust, jsonwebtoken, and mysql / postgresql.
License
Apache-2.0, MIT licenses found
Licenses found
zzy/actix-web-async-graphql-rbatis
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Clean boilerplate for graphql services using actix-web, rhai, async-graphql, surf, rbatis, graphql-client, handlebars-rust, jsonwebtoken, and mysql / postgresql.
See also:tide-async-graphql-mongodb
- Graphql Services
- User register
- Salt and hash a password with PBKDF2 - 使用 PBKDF2 对密码进行加密(salt)和散列(hash)运算
- Sign in
- JSON web token authentication - JWT 鉴权整合
- Change password
- Profile Update
- User: query & mutation
- Project: query & mutation
- Web Application
- Client request, bring & parse GraphQL data
- Render data to template engine
- Define custom helper with Rhai scripting language
- Rust -中文资料集萃
- actix-web -中文文档
- rhai - Embedded Scripting for Rust
- async-graphql -中文文档
- rbatis
- Surf
- graphql_client
- handlebars-rust
- jsonwebtoken
- cookie-rs
git clone https://github.com/zzy/actix-web-async-graphql.gitcd actix-web-async-graphqlcargo build
cd frontend-handlebars
Rename file.env.example
to.env
, or put the environment variables into a.env
file:
ADDRESS=127.0.0.1PORT=3000GRAPHQL_PORT=8080GRAPHQL_PATH=graphqlGRAPHIQL_PATH=graphiql
Build & Run:
cargo run
Then connect tohttp://127.0.0.1:3000 with browser.
cd backend
Rename file.env.example
to.env
, or put the environment variables into a.env
file:
ADDRESS=127.0.0.1PORT=8080GRAPHQL_PATH=graphqlGRAPHIQL_PATH=graphiqlMYSQL_URI=mysql://root:mysql@localhost:3306/budshomePOSTGRES_URI=postgres://root:mysql@localhost:5432/budshomeSITE_KEY=0F4EHz+1/hqVvZjuB8EcooQs1K6QKBvLUxqTHt4tpxE=CLAIM_EXP=10000000000
Build & Run:
cargo run
GraphiQL: connect tohttp://127.0.0.1:8080/graphiql with browser.
- getUserByEmail(...): User!
- getUserByUsername(...): User!
- userSignIn(...): SignInfo!
- allUsers(...): [User!]!
- allProjects: [Project!]!
- allProjectsByUser(...): [Project!]!
- userRegister(...): User!
- userChangePassword(...): User!
- userUpdateProfile(...): User!
- addProject(...): Project!
Sample mutation for user register:
mutation { userRegister( newUser: { email: "example@budshome.com", username: "我是谁", password: "wo#$shi^$shui" } ) { id email username }}
Sample query for user sign in:
{ userSignIn( userAccount: { email: "example@budshome.com" username: "" password: "wo#$shi^$shui" } ) { email username token }}
When submit methoduserSignIn
, a token would be generated, use this token for query all users and every user's projects:
{ allUsers( token: "fyJ0eXAiOiJKV1Q..." ) { id email username projects { id userId subject website } }}
Sample query and mutation for projects was similar to users.
You are welcome in contributing to this project.
About
Clean boilerplate for graphql services using actix-web, rhai, async-graphql, surf, rbatis, graphql-client, handlebars-rust, jsonwebtoken, and mysql / postgresql.
Topics
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors2
Uh oh!
There was an error while loading.Please reload this page.