# 画面設計書 54-HTTPメソッドコンポーネント

## 概要

本ドキュメントは、Laravel例外レンダラーにおけるHTTPメソッド表示コンポーネントの画面設計書である。HTTPメソッド（GET、POST、PUT、PATCH、DELETE等）を視覚的に識別しやすいバッジ形式で表示するUIコンポーネントを定義する。

### 本画面の処理概要

本コンポーネントは、Laravel例外レンダラーの一部として、HTTPリクエストのメソッドを色分けされたバッジで表示する役割を担う。

**業務上の目的・背景**：HTTPメソッドはRESTful APIにおいてリソースに対する操作の種類を示す重要な情報である。GET（読み取り）、POST（作成）、PUT/PATCH（更新）、DELETE（削除）といったメソッドを視覚的に区別することで、開発者がエラー発生時のリクエストコンテキストを即座に理解できる。本コンポーネントは、メソッドごとに異なる色（成功=緑、プライマリ=青、エラー=赤など）を適用し、直感的な識別を可能にする。

**画面へのアクセス方法**：開発環境（APP_DEBUG=true）でアプリケーション実行中に例外が発生すると、自動的に例外詳細画面が表示される。本コンポーネントはrequest-urlコンポーネントから呼び出されて表示される。

**主要な操作・処理内容**：
1. HTTPメソッドの受け取りとタイプ判定（match式による分類）
2. メソッドに応じたバッジタイプの選択（default/success/primary/error）
3. グローブアイコンとメソッド名の組み合わせ表示
4. badgeコンポーネントへの委譲

**画面遷移**：本コンポーネントは例外表示画面内の他コンポーネントに埋め込まれて表示される。単独での画面遷移は発生しない。

**権限による表示制御**：本コンポーネントはAPP_DEBUG=trueの開発環境でのみ表示される。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 53 | HTTPリクエスト | 補助機能 | HTTPメソッド情報の取得 |
| 36 | ビューファクトリ | 主機能 | HTTPメソッドの描画処理 |

## 画面種別

部品（UIコンポーネント）

## URL/ルーティング

本コンポーネントは直接ルーティングされるものではなく、他のコンポーネントから呼び出されて表示される。

## 入出力項目

### 入力項目（Props）

| 項目名 | 属性名 | 型 | 必須 | 説明 |
|--------|--------|------|------|------|
| メソッド | method | string | 必須 | HTTPメソッド名（GET/POST/PUT/PATCH/DELETE/OPTIONS/ANY等） |

### 出力項目

| 項目名 | 説明 |
|--------|------|
| バッジ | メソッド名とグローブアイコンを含む色分けバッジ |

## 表示項目

### メソッドと色の対応

| HTTPメソッド | バッジタイプ | 色 | 意味 |
|-------------|-------------|-----|------|
| GET | default | グレー | 読み取り操作 |
| OPTIONS | default | グレー | オプション取得 |
| ANY | default | グレー | 任意のメソッド |
| POST | success | 緑 | リソース作成 |
| PUT | primary | 青 | リソース置換 |
| PATCH | primary | 青 | リソース部分更新 |
| DELETE | error | 赤 | リソース削除 |
| その他 | default | グレー | デフォルト |

## イベント仕様

本コンポーネントは表示専用であり、ユーザーイベントは発生しない。

## データベース更新仕様

### 操作別データベース影響一覧

本コンポーネントはデータベース操作を行わない（読み取り専用の表示コンポーネント）。

| 操作（イベント） | 対象テーブル | 操作種別 | 概要 |
|----------------|-------------|---------|------|
| - | - | - | データベース操作なし |

## メッセージ仕様

本コンポーネントは固定メッセージを使用しない。HTTPメソッド名がそのまま表示される。

## 例外処理

| 状態 | 処理内容 |
|------|----------|
| 未知のメソッドの場合 | defaultタイプ（グレー）で表示 |

## 備考

- PHPのmatch式を使用したタイプ判定
- badgeコンポーネントに委譲することでスタイルの一貫性を確保
- グローブアイコンでネットワーク/Web関連であることを視覚的に表現

---

## コードリーディングガイド

本画面を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: データ構造を理解する

まず、プログラム間で受け渡されるデータ構造を理解することが重要。このコンポーネントはHTTPメソッド文字列を受け取る。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | http-method.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/http-method.blade.php` | @propsでmethodを受け取り、match式でタイプ判定 |

**読解のコツ**: 行3-11のPHP部分でmatch式によるタイプ判定が行われている。各HTTPメソッドに対応するバッジタイプ（default/success/primary/error）を返す。

#### Step 2: コンポーネント本体を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | http-method.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/http-method.blade.php` | 全17行のシンプルなコンポーネント |

**主要処理フロー**:
- **行1**: @props(['method'])でプロパティ定義
- **行3-11**: @phpブロック内でmatch式によるタイプ判定
- **行4-9**: GET/OPTIONS/ANY→default、POST→success、PUT/PATCH→primary、DELETE→error
- **行13-16**: badgeコンポーネントにtype渡し、グローブアイコンとメソッド名を表示

#### Step 3: 依存コンポーネントを理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | badge.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/badge.blade.php` | typeに応じたスタイル適用 |
| 3-2 | icons/globe.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/icons/globe.blade.php` | グローブアイコンSVG |

### プログラム呼び出し階層図

```
http-method.blade.php
    │
    ├─ @php（match式でタイプ判定）
    │
    └─ badge.blade.php
           │
           └─ icons/globe.blade.php
```

### データフロー図

```
[入力]                      [処理]                              [出力]

method文字列 ───▶ match式（タイプ判定） ───▶ badge.blade.php ───▶ バッジ表示
  "GET"                  │                        │
  "POST"        type = "default"            グローブアイコン
  "PUT"         type = "success"            + メソッド名
  "DELETE"      type = "primary"
                type = "error"
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| http-method.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/http-method.blade.php` | テンプレート | メソッド表示UI |
| badge.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/badge.blade.php` | テンプレート | バッジコンポーネント |
| globe.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/icons/globe.blade.php` | テンプレート | グローブアイコン |
| request-url.blade.php | `src/Illuminate/Foundation/resources/exceptions/renderer/components/request-url.blade.php` | テンプレート | 呼び出し元 |
