[Supabase] PHP 에서 데이터를 조회해 가져오는 방법
요즘 슈퍼베이스(Supabase) 에서 데이터베이스를 만드는 것에 빠져 있습니다.
뭔가 Firebase 는 기능이 많아서 복잡한 느낌도 있길래, 일단 Supabase 를 통해 이래저래 만져 보면서 구경을 하고 있는데요. 사용하기에도 간편하고 재밌네요.
그래서 워드프레스를 이용해 만들고 있는 여러 사이트에서 데이터를 한번에 가져와 조회 할 수 있도록 구현하기 위해, 워드프레스와 PHP를 이용해 Supabase 의 데이터를 Rest API 기능으로 가져오는 방법을 사용하고 있는데, 저와 같은 환경에서 Supabase 를 이용하실 분들을 위해 데이터를 가져오는(SELECT) 방법을 기록으로 남겨 둡니다.
cURL 로 데이터 가져오기
일단 PHP 환경에서 Supabase 의 데이터를 가져오는 전체 예제는 아래와 같습니다.
// 변수 설정
$apiKey = 'apikey: {API Key 값}'; // Public 또는 Secret Key 값
$bearerKey = 'Authorization: Bearer {API Key 값}'; // Public 또는 Secret Key 값
$apiURL = 'https://{프로젝트 ID}.supabase.co/rest/v1/{테이블}'; // 데이터를 가져올 테이블 name, 필요에 따라 조건문 추가
// 세션 초기화
$ch = curl_init($apiURL);
// 요청할 옵션 설정
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [ $apiKey, $bearerKey, 'Content-Type: application/json' ] ); // 옵션으로 Key 값 넣어주고, JSON 형식으로 데이터를 보낸다고 알려주기
// 설정한 세션 실행
$response = curl_exec($ch);
// cURL 세션 닫기
curl_close($ch);
// 반환된 JSON 형식의 데이터를 배열 형식으로 변환
$data = json_decode($response, true);
과정 하나하나를 살펴보면 어려운게 없죠?
몇 가지 부연 설명을 추가하자면,
- API Key 값을 굳이 변수에 넣지 않고, cURL 옵션 설정할 때 그대로 넣어도 상관 없습니다. 저는 코드를 쉽게 알아보기 위해 위와 같이 변수에 넣고 사용하는 것을 좋아합니다.
- 본인이 만든 프로젝트의 API Key 값을 몰라 확인하고 싶다면, 이 포스트를 참고하세요.
- API Key 값으로 Public Key 를 사용해도 되고, Secret Key 를 사용해도 됩니다. Public Key 를 사용하면 조금 더 안전하지만, 해당 테이블에 RLS(Row Level Secutity) 정책을 설정해야 합니다.
- 필요에 따라 테이블 주소(위 예제에서
$apiURL
변수)에 조건을 추가해 원하는 데이터만 가져 올 수 있습니다.
쓰다보니 추가 포스트로 기록할 만한 내용이 있네요. 계속 업데이트 하겠습니다.
끝.