# nitinkumar-gove/mockhttp architecture

> Architecture diagram of the GitHub repository nitinkumar-gove/mockhttp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nitinkumar-gove/mockhttp
- Repository: https://github.com/nitinkumar-gove/mockhttp

## Overview

mockhttp is a Spring Boot HTTP-response mocking API. A client requests `/status/{statusCode}` with optional `message` and `delayMs`; the controller validates the status and configured delay limit, builds a request, and dispatches it to the first supporting strategy. The strategy builds a status-specific response through the response service, while centralized exception handling formats errors. The README also documents an interactive Swagger UI playground for calling the live API; source excerpts do not show its implementation. Edges reflect shown calls and documented endpoint behavior.

Main entry points: [`src/main/java/com/api/mockhttp/controllers/MockhttpController.java`](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/controllers/MockhttpController.java) (Mock controller), [`src/main/java/com/api/mockhttp/strategies/SimpleMockStrategy.java`](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/strategies/SimpleMockStrategy.java) (Immediate strategy), [`src/main/java/com/api/mockhttp/strategies/DelayedMockStrategy.java`](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/strategies/DelayedMockStrategy.java) (Delayed strategy), [`src/main/java/com/api/mockhttp/services/MockResponseService.java`](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/services/MockResponseService.java) (Response service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["HTTP entry"]
  node_application["Spring application"]
  node_controller["Mock controller"]
  node_properties["Delay settings"]
end

subgraph group_dispatch["Mock dispatch"]
  node_request["Mock request<br/>[MockRequest.java]"]
  node_strategy["Strategy interface<br/>[MockStrategy.java]"]
  node_simple["Immediate strategy"]
  node_delayed["Delayed strategy"]
end

subgraph group_responses["Response construction"]
  node_response_service["Response service"]
  node_response["Mock response<br/>[MockResponse.java]"]
end

subgraph group_errors["Error handling"]
  node_exceptions["Validation exceptions"]
  node_exception_handler["Exception handler"]
end

node_client(("HTTP client"))

node_client -->|"requests status"| node_controller
node_application -.->|"starts service"| node_controller
node_controller -->|"reads delay limit"| node_properties
node_controller -->|"throws validation errors"| node_exceptions
node_controller -->|"creates request"| node_request
node_controller -->|"selects and executes"| node_strategy
node_simple -->|"implements"| node_strategy
node_delayed -->|"implements"| node_strategy
node_simple -->|"reads request"| node_request
node_delayed -->|"reads and delays"| node_request
node_simple -->|"builds response via"| node_response_service
node_delayed -->|"builds response via"| node_response_service
node_response_service -->|"constructs body"| node_response
node_exception_handler -->|"handles errors"| node_exceptions
node_controller -->|"returns HTTP response"| node_client

click node_application "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/MockhttpApplication.java"
click node_controller "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/controllers/MockhttpController.java"
click node_properties "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/configs/MockHttpProperties.java"
click node_request "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/models/MockRequest.java"
click node_strategy "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/strategies/MockStrategy.java"
click node_simple "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/strategies/SimpleMockStrategy.java"
click node_delayed "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/strategies/DelayedMockStrategy.java"
click node_response_service "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/services/MockResponseService.java"
click node_response "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/models/MockResponse.java"
click node_exceptions "https://github.com/nitinkumar-gove/mockhttp/tree/main/src/main/java/com/api/mockhttp/exceptions"
click node_exception_handler "https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/exceptions/GlobalExceptionHandler.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_application,node_controller,node_properties,node_client toneBlue
class node_request,node_strategy,node_simple,node_delayed toneAmber
class node_response_service,node_response toneMint
class node_exceptions,node_exception_handler toneRose
```

## Components

### HTTP entry

- [Spring application](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/MockhttpApplication.java): `src/main/java/com/api/mockhttp/MockhttpApplication.java`
- [Mock controller](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/controllers/MockhttpController.java): `src/main/java/com/api/mockhttp/controllers/MockhttpController.java`
- [Delay settings](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/configs/MockHttpProperties.java): `src/main/java/com/api/mockhttp/configs/MockHttpProperties.java`

### Mock dispatch

- [Mock request](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/models/MockRequest.java): `src/main/java/com/api/mockhttp/models/MockRequest.java`
- [Strategy interface](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/strategies/MockStrategy.java): `src/main/java/com/api/mockhttp/strategies/MockStrategy.java`
- [Immediate strategy](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/strategies/SimpleMockStrategy.java): `src/main/java/com/api/mockhttp/strategies/SimpleMockStrategy.java`
- [Delayed strategy](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/strategies/DelayedMockStrategy.java): `src/main/java/com/api/mockhttp/strategies/DelayedMockStrategy.java`

### Response construction

- [Response service](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/services/MockResponseService.java): `src/main/java/com/api/mockhttp/services/MockResponseService.java`
- [Mock response](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/models/MockResponse.java): `src/main/java/com/api/mockhttp/models/MockResponse.java`

### Error handling

- [Validation exceptions](https://github.com/nitinkumar-gove/mockhttp/tree/main/src/main/java/com/api/mockhttp/exceptions): `src/main/java/com/api/mockhttp/exceptions`
- [Exception handler](https://github.com/nitinkumar-gove/mockhttp/blob/main/src/main/java/com/api/mockhttp/exceptions/GlobalExceptionHandler.java): `src/main/java/com/api/mockhttp/exceptions/GlobalExceptionHandler.java`

### Other components

- **HTTP client**

## Connections

- HTTP client → Mock controller: requests status (evidence: `README.md`)
- Spring application → Mock controller: starts service
- Mock controller → Delay settings: reads delay limit (evidence: `src/main/java/com/api/mockhttp/controllers/MockhttpController.java`)
- Mock controller → Validation exceptions: throws validation errors (evidence: `src/main/java/com/api/mockhttp/controllers/MockhttpController.java`)
- Mock controller → Mock request: creates request (evidence: `src/main/java/com/api/mockhttp/controllers/MockhttpController.java`)
- Mock controller → Strategy interface: selects and executes (evidence: `src/main/java/com/api/mockhttp/controllers/MockhttpController.java`)
- Immediate strategy → Strategy interface: implements (evidence: `src/main/java/com/api/mockhttp/strategies/SimpleMockStrategy.java`)
- Delayed strategy → Strategy interface: implements (evidence: `src/main/java/com/api/mockhttp/strategies/DelayedMockStrategy.java`)
- Immediate strategy → Mock request: reads request (evidence: `src/main/java/com/api/mockhttp/strategies/SimpleMockStrategy.java`)
- Delayed strategy → Mock request: reads and delays (evidence: `src/main/java/com/api/mockhttp/strategies/DelayedMockStrategy.java`)
- Immediate strategy → Response service: builds response via (evidence: `src/main/java/com/api/mockhttp/strategies/SimpleMockStrategy.java`)
- Delayed strategy → Response service: builds response via (evidence: `src/main/java/com/api/mockhttp/strategies/DelayedMockStrategy.java`)
- Response service → Mock response: constructs body (evidence: `src/main/java/com/api/mockhttp/services/MockResponseService.java`)
- Exception handler → Validation exceptions: handles errors (evidence: `src/main/java/com/api/mockhttp/exceptions/GlobalExceptionHandler.java`)
- Mock controller → HTTP client: returns HTTP response (evidence: `src/main/java/com/api/mockhttp/controllers/MockhttpController.java`)
