Setup:
npm install
npm start
http://localhost:8000/graphql
Running in dev mode
npm run dev
This code base is for understanding of HTTP, GraphQL, Node.js and general API practices.
Instructions:
- Implement a Node.js-based server with raw
http
, Koa or Express. - Add a
/graphql
endpoint serving the apollo-server or any other GraphQL implementation. - Schema must be able to return proper response for the following public query:
{
movies {
title
year
rating
actors {
name
birthday
country
directors {
name
birthday
country
}
}
}
}
- Add support for the following mutation:
mutation createUser($username: String, $password: String) {
createUser(username: $username, password: $password) {
token
user {
id
name
}
}
}
Input Fields
{
"username": "",
"password": ""
}
- To expand on the number four, add a mutation-based authentication that accepts:
mutation login($username: String, $password: String) {
login(username: $username, password: $password) {
token
user {
id
name
}
}
}
Input Fields
{
"username": "",
"password": ""
}
HTTP Headers
{
"Authorization": "Bearer ...Token..."
}
- Authenticated users may request additional fields for the query used earlier. New
scoutbase_rating
field must return the a random string between 5.0-9.0:
{
movies {
scoutbase_rating
title
year
rating
actors {
name
birthday
country
directors {
name
birthday
country
}
}
}
}
HTTP Headers
{
"Authorization": "Bearer ...Token..."
}
-
/graphql
must be accessible for external clients. -
End.