IBM Full Stack Software Developer study materials
IBM Full Stack Software Developer study resources

IBM Full Stack Software Developer: Back-End Development

IBM Full Stack Software Developer ยท Work through your exam, one topic at a time.

All guide sections

Back-End Development

What this domain tests

Back-End Development covers the server side of the stack: designing REST APIs, writing routes and middleware in Node.js/Express or Python frameworks, modelling data in SQL and NoSQL stores, and handling authentication and input validation securely.

Core rules and concepts

  • REST: resources are plural nouns (/orders, /orders/42), behaviour comes from the HTTP method, and the API is versioned (/api/v1/...).
  • Status codes carry meaning: 200 read, 201 created, 204 no content, 400 malformed request, 401 not authenticated, 403 authenticated but not allowed, 404 missing, 409 conflict, 500 server fault.
  • Middleware runs in registration order; the error handler takes four arguments and must be registered last.
  • Always validate input at the boundary and use parameterised queries - string-concatenated SQL is the classic injection hole.
  • Store passwords only as salted hashes (bcrypt, argon2). Sessions keep state on the server with a cookie holding an ID; JWTs are signed, not encrypted, so never put secrets in the payload.
  • Relational databases give ACID transactions and joins; document stores suit flexible, denormalised payloads. Indexes speed reads and slow writes.

Worked example

POST /api/v1/orders with a JSON body. Check the session or token: no credentials โ†’ 401. Validate that quantity is a positive integer: invalid โ†’ 400 with a field-level message. Insert the order and decrement stock inside one transaction so a failure cannot leave the two out of step, using parameterised SQL. Return 201 with Location: /api/v1/orders/42 and the created object. A later GET /api/v1/orders/99 for a missing row returns 404 - not 400, which would blame the client for a well-formed request.

Traps that cost marks

  • Returning 200 with an error field in the body.
  • Using PUT to change one field - that is PATCH; PUT replaces the resource.
  • Returning 403 when the user is simply not logged in (that is 401).
  • Leaking stack traces to clients.