Search
📚

EP3. Supabase Hello world!

생성일
2025/05/03 08:08
태그
Version 1
Supabase
마지막 업데이트

Supabase Hello world!

Supabase 프로젝트를 생성하고 Hello world!를 출력하는 API를 생성합니다.

학습 목표

Supabase 프로젝트 생성 및 관리 방법
API를 작성하고 배포하는 방법

1. Supabase init

Supabase Backend 코드를 작성할 디렉토리에서 아래 명령어로 Supabase 프로젝트를 초기화 합니다.
supabase init
Bash
복사
Deno를 사용할 예정이므로 y를 선택합니다.

2. Supabase 프로젝트 연결

supabase link
Bash
복사
연결할 프로젝트를 키보드   버튼으로 선택 후 Enter로 선택합니다.
위 강의 “프로젝트 생성”과정에서 획득한 Database Password를 입력합니다.

3. Local에서 Supabase 실행

supabase start
Bash
복사
Docker가 실행되어 있는 상태여야 합니다. 오류메시지가 뜬다면 Docker가 실행되어있는지 확인해주세요.
Supabase 실행에 필요한 환경 구축 후 Docker에서 Supabase가 구동됩니다.
Supabase가 정상적으로 실행되면 현재 Supabase의 접근 정보, key 정보들이 표시됩니다.

4. API 추가

supabase functions new {API이름}
Bash
복사
위 명령어를 통해 functions을 추가합니다.
Supabase에서 functions이란 기능 단위의 묶음이며 배포단위가 됩니다. API의 path에 표시되기도 합니다.
강의에서는 api 라는 보편적인 이름으로 생성하겠습니다.
supabase functions new api
Bash
복사
VSCode에서 프로젝트를 열어보면 functions/api 디렉토리와 하위 기본 파일들이 생성되는 것을 볼 수 있습니다.
기본으로 생성되는 템플릿은 body 요청이 포함되는데 테스트에 어려움이 있으므로 아래 코드로 대치합니다.
Deno.serve(async (req) => { return new Response( "hello world", ); });
TypeScript
복사

5. Local 배포

supabase functions serve --no-verify-jwt
TypeScript
복사
Local에 작성한 Deno Backend 로직이 배포되며 위 주소로 접근할 수 있습니다. <function-name>은 4번 과정에서 사용한 이름입니다.
http://127.0.0.1:54321/functions/v1/api
브라우저에서 해당 주소로 접근시 `hello world` 데이터를 확인할 수 있습니다.

6. Public 배포

Local에서 서버로직 테스트 후 Public에 배포해야 사용자에게 업데이트 된 기능을 제공할 수 있습니다.
supabase functions deploy --no-verify-jwt
TypeScript
복사
배포가 완료되면 Supabase 웹 콘솔에서 확인할 수 있습니다.
배포 명령어에서 --no-verify-jwt 옵션을 사용하지 않는 경우 인증오류가 발생합니다.
Supabase anon-key를 헤더로 담아보내는 것으로 인증을 진행할 수 있지만 우리는 추후 서비스 수준에서 인증을 진행할 예정이기 때문에 Supabase 인증은 사용하지 않습니다.

6. 스크립트 추가

로컬 배포, 원격 배포 스크립트가 복잡하진 않습니다만 편의를 위해 스크립트를 만들어 관리하도록 합니다.
프로젝트 루트 디렉토리에 scripts 디렉토리를 추가하고 deploy.sh, serve.sh 파일을 추가합니다.
scripts/serve.sh
supabase functions serve --no-verify-jwt
TypeScript
복사
scripts/deploy.sh
supabase functions deploy --no-verify-jwt
TypeScript
복사
앞으로는 아래 명령어로 로컬 배포, 원격 배포를 진행할 수 있습니다.
bash scripts/serve.sh bash scripts/deploy.sh
TypeScript
복사
끝.