> ## Documentation Index
> Fetch the complete documentation index at: https://dripart-mintlify-b90d3c69.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 경로

## 경로

서버는 `get` 및 `post` 메소드의 일련을 정의하며, 이는 `server.py`에서 `@routes`를 검색하여 찾을 수 있습니다. 웹 클라이언트에서 워크플로우를 제출하면 `/prompt`로 게시되며, 이는 프롬프트를 검증하고 실행 대기열에 추가한 후 `prompt_id`와 번호(대기열 내 위치) 또는 검증 실패 시 `error`와 `node_errors`를 반환합니다. 프롬프트 대기열은 `execution.py`에 정의되어 있으며, 여기에는 `PromptExecutor` 클래스도 포함됩니다.

### 기본 제공 경로

`server.py`는 다음과 같은 경로를 정의합니다:

#### 핵심 API 경로

| 경로                             | get/post/ws | 목적                                                        |
| ------------------------------ | ----------- | --------------------------------------------------------- |
| `/`                            | get         | 컴피 웹페이지 로드                                                |
| `/ws`                          | websocket   | 서버와 실시간 통신을 위한 WebSocket 엔드포인트                            |
| `/embeddings`                  | get         | 사용 가능한 임베딩 이름 목록 조회                                       |
| `/extensions`                  | get         | `WEB_DIRECTORY`를 등록하는 확장 프로그램 목록 조회                       |
| `/features`                    | get         | 서버 기능 및 역량 조회                                             |
| `/models`                      | get         | 사용 가능한 모델 유형 목록 조회                                        |
| `/models/{folder}`             | get         | 특정 폴더의 모델 조회                                              |
| `/workflow_templates`          | get         | 커스텀 노드 모듈과 관련 템플릿 워크플로우 맵 조회                              |
| `/upload/image`                | post        | 이미지 업로드                                                   |
| `/upload/mask`                 | post        | 마스크 업로드                                                   |
| `/view`                        | get         | 이미지 보기. 다양한 옵션 참조, `server.py`의 `@routes.get("/view")` 확인 |
| `/view_metadata`/{folder_name} | get         | 모델의 메타데이터 조회                                              |
| `/system_stats`                | get         | 시스템 정보 조회 (파이썬 버전, 장치, VRAM 등)                            |
| `/prompt`                      | get         | 현재 대기열 상태 및 실행 정보 조회                                      |
| `/prompt`                      | post        | 프롬프트를 대기열에 제출                                             |
| `/object_info`                 | get         | 모든 노드 유형의 세부 정보 조회                                        |
| `/object_info/{node_class}`    | get         | 특정 노드 유형의 세부 정보 조회                                        |
| `/history`                     | get         | 대기열의 이력 조회                                                |
| `/history/{prompt_id}`         | get         | 특정 프롬프트의 대기열 이력 조회                                        |
| `/history`                     | post        | 이력을 지우거나 이력 항목 삭제                                         |
| `/queue`                       | get         | 현재 실행 대기열 상태 조회                                           |
| `/queue`                       | post        | 대기열 작업 관리 (대기/실행 중인 작업 지우기)                               |
| `/interrupt`                   | post        | 현재 워크플로우 실행 중단                                            |
| `/free`                        | post        | 특정 모델 언로드로 메모리 해제                                         |
| `/userdata`                    | get         | 지정된 디렉터리의 사용자 데이터 파일 목록 조회                                |
| `/v2/userdata`                 | get         | 구조화된 형식으로 파일 및 디렉터리를 나열하는 강화된 버전                          |
| `/userdata/{file}`             | get         | 특정 사용자 데이터 파일 조회                                          |
| `/userdata/{file}`             | post        | 사용자 데이터 파일 업로드 또는 업데이트                                    |
| `/userdata/{file}`             | delete      | 특정 사용자 데이터 파일 삭제                                          |
| `/userdata/{file}/move/{dest}` | post        | 사용자 데이터 파일 이동 또는 이름 변경                                    |
| `/users`                       | get         | 사용자 정보 조회                                                 |
| `/users`                       | post        | 새 사용자 생성 (다중 사용자 모드만 가능)                                  |

### WebSocket 통신

`/ws` 엔드포인트는 클라이언트와 서버 간의 양방향 실시간 통신을 제공합니다. 이는 다음을 위해 사용됩니다:

* 실행 진행 상황 업데이트 수신
* 노드 실행 상태 실시간 조회
* 오류 메시지 및 디버깅 정보 수신
* 대기열 상태 변경 시 라이브 업데이트

WebSocket 연결은 다음과 같은 유형의 JSON 메시지를 전송합니다:

* `status` - 전체 시스템 상태 업데이트
* `execution_start` - 프롬프트 실행 시작 시
* `execution_cached` - 캐시된 결과 사용 시
* `executing` - 노드 실행 중 업데이트
* `progress` - 장시간 실행 작업의 진행률 업데이트
* `executed` - 노드 실행 완료 시

### 맞춤 경로

실행 중 클라이언트에서 서버로 메시지를 보내고 싶다면 서버에 맞춤 경로를 추가해야 합니다. 복잡한 경우 [aiohttp 프레임워크 문서](https://docs.aiohttp.org/)를 살펴봐야 하지만, 대부분의 경우 다음과 같이 처리할 수 있습니다:

```Python theme={null}
from server import PromptServer
from aiohttp import web
routes = PromptServer.instance.routes
@routes.post('/my_new_path')
async def my_function(request):
    the_data = await request.post()
    # the_data는 이제 전송된 값들의 딕셔너리를 담고 있습니다
    MyClass.handle_my_message(the_data)
    return web.json_response({})
```

<Tip>무엇을 하는지 잘 알고 있지 않다면, 클래스 내부에 `my_function`을 정의하지 마세요.\
`@routes.post` 데코레이터는 많은 작업을 수행합니다! 대신 위와 같이 함수를 정의한 후 클래스 메서드를 호출하세요.</Tip>

<Tip>변경하지 않는다면 `@routes.get`도 정의할 수 있습니다.</Tip>

클라이언트는 다음과 같은 코드와 같은 `FormData` 객체를 보내면 새로운 경로를 사용할 수 있으며, 이는 위 코드에서 `the_data`가 `message`와 `node_id` 키를 포함하게 됩니다:

```Javascript theme={null}
import { api } from "../../scripts/api.js";
function send_message(node_id, message) {
    const body = new FormData();
    body.append('message', message);
    body.append('node_id', node_id);
    api.fetchApi("/my_new_path", { method: "POST", body, });
}
```
