Skip to content
Our Sponsors
Open in Anthropic

Expo와의 통합

Expo SDK 50 및 App Router v3부터 Expo 앱에서 직접 API 라우트를 생성할 수 있습니다.

  1. app/[...slugs]+api.ts 생성
  2. Elysia 서버 정의
  3. 사용하려는 HTTP 메서드 이름으로 Elysia.fetch 내보내기
typescript
import { Elysia, t } from 'elysia'

const app = new Elysia()
    .get('/', 'hello Expo')
    .post('/', ({ body }) => body, {
        body: t.Object({
            name: t.String()
        })
    })

export const GET = app.fetch 
export const POST = app.fetch 

Elysia 서버를 일반 Expo API 라우트처럼 취급할 수 있습니다.

Prefix

Elysia 서버를 앱 라우터의 루트 디렉터리가 아닌 다른 곳에 배치하는 경우, Elysia 서버에 접두사를 주석으로 달아야 합니다.

예를 들어, Elysia 서버를 app/api/[...slugs]+api.ts에 배치하는 경우, Elysia 서버에 접두사로 /api를 주석으로 달아야 합니다.

typescript
import { Elysia, t } from 'elysia'

const app = new Elysia({ prefix: '/api' }) 
    .get('/', 'Hello Expo')
    .post('/', ({ body }) => body, {
        body: t.Object({
            name: t.String()
        })
    })

export const GET = app.fetch
export const POST = app.fetch

이렇게 하면 어디에 배치하든 Elysia 라우팅이 제대로 작동합니다.

Eden

tRPC와 유사한 end-to-end 타입 안전성을 위해 Eden을 추가할 수 있습니다.

  1. Elysia 서버에서 type 내보내기
typescript
import { Elysia } from 'elysia'

const app = new Elysia()
	.get('/', 'Hello Nextjs')
	.post(
		'/user',
		({ body }) => body,
		{
			body: treaty.schema('User', {
				name: 'string'
			})
		}
	)

export type app = typeof app 

export const GET = app.fetch
export const POST = app.fetch
  1. Treaty 클라이언트 생성
typescript
import { treaty } from '@elysiajs/eden'
import type { app } from '../app/[...slugs]+api'

export const api = treaty<app>('localhost:3000/api')
  1. 서버 및 클라이언트 컴포넌트 모두에서 클라이언트 사용
tsx
import { api } from '../lib/eden'

export default async function Page() {
	const message = await api.get()

	return <h1>Hello, {message}</h1>
}

배포

필요한 경우 Elysia를 사용하여 API 라우트를 직접 사용하고 일반 Elysia 앱으로 배포하거나 실험적 Expo 서버 런타임을 사용할 수 있습니다.

Expo 서버 런타임을 사용하는 경우 expo export 명령을 사용하여 Expo 앱용 최적화된 빌드를 생성할 수 있으며, dist/server/_expo/functions/[...slugs]+api.js에 Elysia를 사용하는 Expo 함수가 포함됩니다.

TIP

Expo Functions는 일반 서버가 아닌 Edge 함수로 취급되므로 Edge 함수를 직접 실행해도 포트가 할당되지 않습니다.

Expo가 제공하는 Expo 함수 어댑터를 사용하여 Edge Function을 배포할 수 있습니다.

현재 Expo는 다음 어댑터를 지원합니다: