Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,46 @@ export default defineConfig({

`src/app.ts` 파일이 없거나 `advancedRouting`이 활성화되지 않은 경우, Astro는 모든 기능을 자동으로 실행하는 내장 파이프라인을 사용합니다.

`astro`에서 `Fetchable` 타입을 선택적으로 가져와 진입점의 타입을 검사할 수 있습니다:

```ts title="src/app.ts"
import type { Fetchable } from 'astro';

export default {
async fetch(request: Request): Promise<Response> {
// ...
},
} satisfies Fetchable;
```

### 진입점 파일 사용자 지정

기본적으로 Astro는 고급 라우팅 진입점으로 `src/app.ts` 파일을 사용합니다. 다른 파일을 사용하려면 `fetchFile` 옵션이 포함된 객체를 `advancedRouting`에 전달하세요:

```js title="astro.config.mjs"
export default defineConfig({
experimental: {
advancedRouting: {
fetchFile: 'fetch.ts',
},
},
});
```

이 구성을 사용하면 Astro는 `src/app.ts` 대신 `src/fetch.ts` 파일을 사용합니다.

`fetchFile`을 `null`로 설정하면 진입점을 완전히 비활성화할 수 있습니다. 이는 `src/app.ts` 파일을 이미 다른 용도로 사용하고 있는 경우에 유용합니다:

```js title="astro.config.mjs"
export default defineConfig({
experimental: {
advancedRouting: {
fetchFile: null,
},
},
});
```

### `astro()` 사용하기

가장 쉬운 시작 방법은 [`astro()` 핸들러](#astro)를 사용하는 것입니다. 이 핸들러는 Astro의 전체 내장 파이프라인(세션, 캐시, 리다이렉트, 트레일링 슬래시, 액션, 미들웨어, 페이지, i18n)을 기본 순서대로 실행합니다. 이를 통해 내부 파이프라인의 동작 방식을 변경하지 않고도 Astro 파이프라인 실행 전후에 사용자 정의 로직을 추가할 수 있습니다:
Expand Down Expand Up @@ -132,6 +172,20 @@ export default {
};
```

## `App.Providers`를 사용하여 사용자 정의 프로바이더 타입 지정하기

[`state.provide()`](#stateprovide)를 사용하여 사용자 정의 컨텍스트 프로바이더를 등록할 때, `App.Providers` 인터페이스를 사용하여 해당 타입을 선언할 수 있습니다. 이를 통해 컴포넌트와 미들웨어에서 `Astro`와 `ctx`의 타입이 완벽하게 지정됩니다:

```ts title="src/env.d.ts"
declare namespace App {
interface Providers {
oauth: import('./lib/oauth').OAuthSession;
}
}
```

프로바이더를 선언하면 `ctx.oauth` (및 `.astro` 파일의 `Astro.oauth`)의 타입이 자동으로 지정됩니다.

## `astro/fetch` 핸들러 참조

모든 핸들러 함수는 `astro/fetch`에서 가져오며 `FetchState` 객체를 기반으로 동작합니다.
Expand Down Expand Up @@ -202,6 +256,21 @@ const state = new FetchState(request);

응답의 HTTP 상태 코드입니다. 렌더링 전에 이를 설정하여 응답 상태를 제어할 수 있습니다 (예: `state.status = 404`).

##### `state.response`

<p>

**타입:** `Response | undefined`<br />
**기본값:** `undefined`
</p>

렌더링이 완료된 후 핸들러에 의해 생성된 `Response`입니다. 이는 [`pages()`](#pages) 및 [`middleware()`](#middleware)에 의해 자동으로 설정되어, 파이프라인의 뒷부분에서 응답을 검사하거나 사용할 수 있게 해줍니다:

```ts
const response = await middleware(state, (s) => pages(s));
// 이제 state.response는 response와 동일한 객체입니다
```

#### 메서드

##### `state.rewrite()`
Expand Down
Loading