# MethodNotAllowedException

**Kind:** Class

**Source:** [`packages/common/exceptions/method-not-allowed.exception.ts`](https://github.com/nestjs/nest/blob/master/packages/common/exceptions/method-not-allowed.exception.ts#L11)

**Part of:** [Common](subsystem-packages-common)

Defines an HTTP exception for *Method Not Allowed* type errors.

`MethodNotAllowedException` represents an HTTP 405 error when a request uses a method that is not supported by a route or resource. It integrates with the common exception handling system so unsupported methods can be converted into a consistent HTTP error response.

**Extends:** `HttpException`

## Diagram

```mermaid
graph LR
  Client[HTTP Client] --> Request[Request with unsupported method]
  Request --> Route[Route/Controller]
  Route --> Exception[MethodNotAllowedException]
  Exception --> Handler[Global Exception Handler]
  Handler --> Response[HTTP 405 Method Not Allowed]
```

## Usage

```ts
import { MethodNotAllowedException } from '@nestjs/common';

function updateUser(requestMethod: string) {
  if (requestMethod !== 'PATCH') {
    throw new MethodNotAllowedException(
      `Method ${requestMethod} is not allowed for this resource.`,
    );
  }

  return { updated: true };
}
```

## AI Coding Instructions

- Throw `MethodNotAllowedException` when a route exists but does not support the incoming HTTP method.
- Prefer framework routing configuration for normal method enforcement; use this exception for explicit runtime validation or custom dispatching.
- Include a clear error message when the allowed method or resource context helps API consumers diagnose the issue.
- Do not use this exception for missing routes; use a not-found exception when no matching resource or endpoint exists.
