카테고리 없음

Supabase edge functions를 사용해보자

호리둥절 2023. 5. 26. 15:39

supabase functions 란?

Supabase Edge Functions은 Supabase의 서버리스 함수 기능 중 하나로, 전 세계의 엣지 네트워크에 함수를 배포하는 기능입니다. 이를 통해 API 요청에 대한 응답 시간을 단축하고 사용자에게 더 빠른 서비스를 제공할 수 있습니다. Supabase의 관리 대시보드를 통해 간편하게 함수를 개발하고 배포할 수 있으며, 엣지 네트워크에 자동으로 배포됩니다. 이를 활용하여 Supabase의 다른 기능과 함께 효과적인 백엔드 서비스를 구축할 수 있습니다.

 

기존에는 aws를 통해 백앤드 서버를 구축하였으나, 간단한 프로젝트인경우 비용도 aws보다 괜찮고, 배포도 매우 편리하기 때문에 꼭 사용해 보셨으면 좋겠습니다 ㅎㅎ

 

supabase functions 사용하기

개발환경은 mac 에서 진행하였으나 추후에 Window에서도 사용해보고 코드 추가할 예정입니다~

 

1. supabase cli를 설치하기

supabase 명령어를 사용하기위해 cli를 설치하여 줍니다.

npm install supabase --save-dev

 

2. supabase login 하기

나중에 deploy하기 위해 로그인을 해야합니다.

supabase login

supabase login 로그인 명령어를 입력하면 아래 사진과 같이 토큰을 입력해달라고 뜹니다.

그럼 아래 사진에서 dashboard > access tokens 탭으로 들어가 generate token 을 해준후 만들어진 토큰을 copy 해줍니다

그다음 프로젝트로 돌아가서 enter your access token: 에 발급받은 토큰을 입력해주시기 바랍니다.

 

3. supabase 파일 만들기

supabase functions new test

위와 같이 명령어를 입력하면 supabase 폴더가 만들어집니다.  진행하는 프론트엔드 프로젝트에 만들어줬습니다. 

 

4. 배포하기

자 이제 index.ts 에 get과 post 요청 하나씩 예시로 작성하고 테스트 해보겠습니다.

[ index.ts ]

 
import { serve } from "https://deno.land/std@0.168.0/http/server.ts"

serve(async (req: Request) => {

  if (req.method === 'GET') {
    // GET 요청 처리 로직 작성
    const data = {
      message: 'GET request successful',
    };
    return new Response(JSON.stringify(data), {
      headers: { 'Content-Type': 'application/json' },
    });
  }

  else if (req.method === 'POST') {
    // POST 요청 처리 로직 작성
    const body = await req.text();
    const data = {
      message: `POST request successful. Body: ${body}`,
    };
    return new Response(JSON.stringify(data), {
      headers: { 'Content-Type': 'application/json' },
    });
  }
})

자 이렇게 코드를 작성하고 배포 해줍니다.

supabase functions deploy test

배포시에 Enter your project ref 를 입력하라고 뜨는데 

dashboard > 프로젝트 이름 > project settings 로 들어가 Reference ID를 입력해 주시기 바랍니다.

 

배포한 프로젝트는 

dashboard > 프로젝트 이름 >  edge functions에서 볼 수 있습니다.

postman을 이용하여 아래 url로 요청을 보내보았는데 Missing authorization header 에러가 뜹니다. 그이유는 

enforce jwt verification 이 기본 설정이 true이기 때문입니다 이것을 false로 바꾼후 save하고 다시 요청을 보내보면 아래와 같이 정상적으로 실행 되는것을 보실수 있습니다.

 

이렇게 supabase Edge functions 를 사용하는 방법을 알아보았습니다. 다음에는 edge functions를 사용하여 oauth로그인을 하나씩 진행해 보겠습니다 ^^..!