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