# API Scaffold — 代码模板与异常体系 > 主流程见 SKILL.md,本文档为 Controller/Service/FormRequest/路由 的完整代码模板。 ## Hyperf 分层目录约定 | 文件 | 路径 | |------|------| | Controller | `app/Controller/Admin/Controller.php` | | Service | `app/Service//Service.php` | | FormRequest | `app/Request//CreateRequest.php` | | Model | `app/Model//.php`(如不存在) | | Route | `app/Http/Admin/Router/.php` | ## Controller 模板 ```php all(); $result = $this->service->getPageList($params); return $this->success($result); } #[RequestMapping(path: '{id:\d+}', methods: ['GET'])] public function detail(int $id): ResponseInterface { $result = $this->service->getById($id); return $this->success($result); } #[RequestMapping(path: '', methods: ['POST'])] public function create(Create{{Resource}}Request $request): ResponseInterface { $data = $request->validated(); $result = $this->service->create($data); return $this->success($result, 201); } #[RequestMapping(path: '{id:\d+}', methods: ['PUT'])] public function update(int $id, Create{{Resource}}Request $request): ResponseInterface { $data = $request->validated(); $result = $this->service->update($id, $data); return $this->success($result); } #[RequestMapping(path: '{id:\d+}', methods: ['DELETE'])] public function delete(int $id): ResponseInterface { $this->service->delete($id); return $this->success(null, message: 'Deleted'); } } ``` ## Service 模板 ```php where('status', $params['status']); $page = (int) ($params['page'] ?? 1); $pageSize = (int) ($params['page_size'] ?? 10); $total = $query->count(); $items = $query->orderByDesc('id')->offset(($page - 1) * $pageSize)->limit($pageSize)->get(); return ['items' => $items, 'total' => $total]; } public function getById(int $id): {{Resource}} { $record = {{Resource}}::find($id); if (!$record) throw new BusinessException(404, '{{Resource}} not found'); return $record; } public function create(array $data): {{Resource}} { return Db::transaction(fn () => {{Resource}}::create($data)); } public function update(int $id, array $data): {{Resource}} { $record = $this->getById($id); return Db::transaction(function () use ($record, $data) { $record->update($data); return $record->refresh(); }); } public function delete(int $id): void { $record = $this->getById($id); $record->delete(); } } ``` ## FormRequest 模板 ```php [AccessTokenMiddleware::class, PermissionMiddleware::class]]); ``` ## 统一响应格式 ```php protected function success(mixed $data = null, int $code = 200, string $message = 'ok'): ResponseInterface { return $this->response->json(['code' => $code, 'message' => $message, 'data' => $data]); } protected function error(string $message, int $code = 500, mixed $data = null): ResponseInterface { return $this->response->json(['code' => $code, 'message' => $message, 'data' => $data]); } ```