Skip to content
intermediate

Idempotent and safe methods

Complete the table of HTTP method semantics — which repeats are free, and which never change anything.

export interface MethodProfile {
  idempotent: boolean
  safe: boolean
}

/**
 * Returns the idempotency and safety of an HTTP method, case-insensitive.
 * Unknown methods get the conservative answer: neither property promised.
 */
export function methodProfile(method: string): MethodProfile {
  switch (method.toUpperCase()) {
    case 'GET':
    case 'HEAD':
    case 'OPTIONS':
    case 'TRACE':
      return { idempotent: ____, safe: ____ }
    case 'PUT':
    case 'DELETE':
      return { idempotent: ____, safe: _____ }
    case 'POST':
    case 'PATCH':
      return { idempotent: _____, safe: _____ }
    default:
      return { idempotent: false, safe: false }
  }
}
0/6 filled tab moves · Ctrl+↵ submits · Ctrl+Shift+↵ runsstarter code