본문 바로가기
개발정리 (Bun)

Bun 1.0과 ElysiaJS로 API 만들기

by 할리갈리0 2023. 9. 25.

JavaScript와 TypeScript 개발을 위한 빠르고 통합적인 툴킷인 Bun 1.0과 

Bun 웹 프레임워크인 ElysiaJS를 사용하여 API를 만드는 방법에 대해 알아보겠습니다.

 

1. Bun 설치하기

curl -fsSL https://bun.sh/install | bash -s "bun-v1.0.0"

또는

npm install -g bun

 

2. 새로운 프로젝트 생성하기

bun create elysia hi-elysia

 

3. bun이 설치된 디렉토리로 이동하기

cd hi-elysia

 

4. src/index.ts 파일 열고 코드 확인하기

import { Elysia } from 'elysia'

const app = new Elysia()
    .get('/', () => 'Hello Elysia')
    .listen(8080)

console.log(`🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`)

 

5. 요청 본문 타입 정의하기

new Elysia()
    .post('/sign-in', ({ body }) => signIn(body), {
        body: t.Object({
            username: t.String(),
            password: t.String()
        })
    })
    .listen(8080)

 

6. 경로 매개변수(Path Parameters)

경로 매개변수는 URL 패턴 내부 변수입니다. 패턴이 일치하면 context.params에 이름이 지정된 경로가 생성되고 그 값으로 검색 가능

new Elysia()
    .get('/id/:id', ({ params: { id } }) => getUserById(id))
    .listen(8080)

 

7. 와일드카드(Wildcard)

모든 패턴을 일치시키거나 너무 많은 중복성을 가지고 있는 경우 '*' 와일드카드를 사용하여 나머지 일치 가능

new Elysia()
    .get('/user/*', () => doSomething())
    .listen(8080)

 

8. Swagger 플러그인 사용하기

플러그인을 사용하면 한 줄의 코드로 Swagger를 이용하여 API 문서를 생성 가능

import { Elysia, t } from 'elysia'
import { swagger } from '@elysias/swagger'

new Elysia()
    .use(swagger())
    .post('/sign-in', ({ body }) => signIn(body), {
        body: t.Object({
            username: t.String(),
            password: t.String()
        })
    })
    .listen(8080)

 

9. 전체 코드 확인하기

import { Elysia, t } from 'elysia'
import { swagger } from '@elysias/swagger'

const app = new Elysia()
    .use(swagger())
    .get('/ping', () => 'pong')
    .route('M-SEARCH', () => 'From M Search')
    .get('/id/:id', ({ params: { id } }) => getUserById(id))
    .get('/user/*', () => doSomething())
    .post('/sign-in', ({ body }) => signIn(body), {
        body: t.Object({
            username: t.String(),
            password: t.String()
        })
    })
    .listen(8080)

export type App = typeof app

 

10. 서버 실행하기

브라우저에서 http://localhost:8080 으로 이동하면 서버가 실행 중임을 확인 가능

bun dev

 

11. 클라이언트에서 호출하기

// client.ts
import { edenTreaty } from '@elysias/eden'
import type { App } from './server'

const app = edenTreaty<App>('http://localhost:8080')

app.signIn.post({
    username: 'saltyaom',
    password: 12345678
}).then(console.log)

 

Bun 1.0과 ElysiaJS를 사용하여 복잡한 API도 쉽게 만들 수 있게 되었습니다.

 

[참고 사이트]

https://bun.sh/docs

https://elysiajs.com/quick-start.html

 

Getting Start - ElysiaJS

Elysia is a library built for Bun, and it's all you need to get started. Bootstrap a new project with "bun create elysia hi-elysia" and start the development server with "bun dev". That's all you need to work on Elysia.js!

elysiajs.com

 

반응형