Bird
Raised Fist0
GraphQLquery~5 mins

Server middleware in GraphQL - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is server middleware in the context of GraphQL?
Server middleware is a function or set of functions that run between the client request and the server response. It can modify requests, handle authentication, logging, or errors before the GraphQL resolver processes the query.
Click to reveal answer
beginner
How does middleware help with authentication in a GraphQL server?
Middleware can check the user's credentials or tokens before the GraphQL query runs. If authentication fails, it can stop the request early and return an error, protecting the server from unauthorized access.
Click to reveal answer
intermediate
Where in the request lifecycle does server middleware operate?
Middleware operates after the server receives the request but before the GraphQL resolvers execute. It acts as a checkpoint to modify or validate the request or response.
Click to reveal answer
beginner
Give an example of a common task performed by GraphQL server middleware.
A common task is logging each incoming request's details like query, variables, and user info. This helps monitor usage and debug issues.
Click to reveal answer
intermediate
Can middleware modify the GraphQL query or response? How?
Yes, middleware can modify the request by adding headers or changing context data passed to resolvers. It can also modify the response by intercepting errors or formatting results before sending back to the client.
Click to reveal answer
What is the main role of server middleware in GraphQL?
ATo run functions between receiving a request and sending a response
BTo process and resolve GraphQL queries
CTo store data in the database
DTo create GraphQL schemas
Which of these is a typical use of middleware in a GraphQL server?
AChecking user authentication
BDefining GraphQL types
CWriting database queries
DRendering UI components
When does middleware run in the GraphQL request process?
AAfter resolvers finish
BBefore the server receives the request
CBetween receiving the request and running resolvers
DOnly after sending the response
Can middleware modify the response sent to the client?
ANo, it only reads the request
BYes, it can format or handle errors in the response
CNo, only resolvers can modify responses
DYes, but only by changing the database
Which of these is NOT a typical middleware task?
ALogging requests
BValidating tokens
CAdding headers to requests
DRendering HTML pages
Explain what server middleware does in a GraphQL server and why it is useful.
Think about what happens before the GraphQL query runs.
You got /4 concepts.
    Describe how middleware can affect the flow of a GraphQL request from client to server.
    Consider middleware as a checkpoint in the request journey.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of server middleware in a GraphQL server?
      easy
      A. To run code before GraphQL resolvers to manage requests
      B. To define the GraphQL schema types
      C. To execute database queries directly
      D. To format the GraphQL query results

      Solution

      1. Step 1: Understand middleware role

        Middleware runs before the main GraphQL code to handle requests.
      2. Step 2: Identify middleware tasks

        It can check, log, or modify requests before resolvers run.
      3. Final Answer:

        To run code before GraphQL resolvers to manage requests -> Option A
      4. Quick Check:

        Middleware manages requests before resolvers [OK]
      Hint: Middleware runs before resolvers to manage requests [OK]
      Common Mistakes:
      • Confusing middleware with schema definition
      • Thinking middleware executes database queries
      • Assuming middleware formats results
      2. Which of the following is the correct way to call the next middleware function in a GraphQL server middleware?
      easy
      A. next();
      B. continue();
      C. proceed();
      D. runNext();

      Solution

      1. Step 1: Recall middleware function signature

        Middleware functions receive a next callback to continue processing.
      2. Step 2: Identify correct call syntax

        The standard call to continue is next(); exactly.
      3. Final Answer:

        next(); -> Option A
      4. Quick Check:

        Use next() to continue middleware chain [OK]
      Hint: Call next() to continue middleware processing [OK]
      Common Mistakes:
      • Using incorrect function names like continue()
      • Forgetting to call next() causing request hang
      • Calling next without parentheses
      3. Given this middleware code snippet, what will be logged when a request is made?
      function logMiddleware(req, res, next) {
        console.log('Request received');
        next();
        console.log('Request processed');
      }
      medium
      A. Request processed\nRequest received
      B. Request received\nRequest processed
      C. Only Request received
      D. Only Request processed

      Solution

      1. Step 1: Analyze middleware execution order

        First, 'Request received' logs before calling next().
      2. Step 2: Understand next() behavior

        After next() completes, 'Request processed' logs.
      3. Final Answer:

        Request received\nRequest processed -> Option B
      4. Quick Check:

        Logs before and after next() run in order [OK]
      Hint: Logs before and after next() run in order [OK]
      Common Mistakes:
      • Assuming next() blocks logging after it
      • Thinking logs reverse order
      • Ignoring that next() allows later code to run
      4. Identify the error in this middleware code:
      function authMiddleware(req, res, next) {
        if (!req.user) {
          res.status(401).send('Unauthorized');
        }
        next();
      }
      medium
      A. req.user check should be after next()
      B. Missing call to next() inside if block
      C. res.status should be res.sendStatus
      D. next() is called even after sending response

      Solution

      1. Step 1: Check flow after sending response

        If !req.user, response is sent but next() still runs.
      2. Step 2: Understand middleware flow control

        Calling next() after sending response can cause errors or duplicate handling.
      3. Final Answer:

        next() is called even after sending response -> Option D
      4. Quick Check:

        Stop calling next() after response sent [OK]
      Hint: Don't call next() after sending response [OK]
      Common Mistakes:
      • Calling next() unconditionally after response
      • Not returning after sending response
      • Misplacing user check after next()
      5. You want to add middleware that logs the request time and then modifies the request object to add a requestId before GraphQL resolvers run. Which middleware code correctly achieves this?
      hard
      A. function middleware(req, res, next) { req.requestTime = Date.now(); next(); res.requestId = Math.random().toString(36).slice(2); }
      B. function middleware(req, res) { req.requestTime = Date.now(); next(); req.requestId = Math.random().toString(36).slice(2); }
      C. function middleware(req, res, next) { req.requestTime = Date.now(); req.requestId = Math.random().toString(36).slice(2); next(); }
      D. function middleware(req, res, next) { next(); req.requestTime = Date.now(); req.requestId = Math.random().toString(36).slice(2); }

      Solution

      1. Step 1: Ensure middleware modifies request before next()

        Properties must be set on req before calling next() to be available in resolvers.
      2. Step 2: Check correct use of next() and property assignment

        function middleware(req, res, next) { req.requestTime = Date.now(); req.requestId = Math.random().toString(36).slice(2); next(); } sets both properties before next(), ensuring proper order and correct object.
      3. Final Answer:

        function middleware(req, res, next) { req.requestTime = Date.now(); req.requestId = Math.random().toString(36).slice(2); next(); } -> Option C
      4. Quick Check:

        Set req properties before next() call [OK]
      Hint: Set req properties before next() to pass data [OK]
      Common Mistakes:
      • Calling next() before setting properties
      • Modifying res instead of req for request data
      • Missing next() parameter or call
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard