[BaaS] PocketBase
Updated:
개요
- 사이트 / GitHub
- 하나의 파일로 구성된 SaaS 및 모바일 앱을 위한 오픈 소스 백엔드
- 실시간 구독, 내장된 인증 관리, 편리한 대시보드 UI 및 간단한 REST-ish API를 갖춘 내장형 데이터베이스(SQLite)로 구성된 오픈 소스 백엔드
설치
Collections
- 애플리케이션 데이터
- 컬렉션 이름과 필드를 사용하여 자동으로 생성되는 일반 SQLite 테이블
- 레코드
- 컬렉션의 단일 항목
- SQL 테이블의 단일 행
- 타입
API rules and filters
Client-side SDKs
- JavaScript SDK(browser and node)
- Dart SDK(web, mobile, desktop and cli)
- Admin UI에서 API 미리보기 버튼을 클릭하여 복사하여 붙여넣을 수 있는 예를 포함하여 수집 기록에 대한 개별 문서 생성 가능
Authentication
- PocketBase API는 Authorization HTTP 헤더(Authorization: TOKEN)를 통한 인증에 JWT를 사용
- SDK
Files upload and handling
- 업로드
- 컬렉션에 파일 필드를 추가
- API/SDK를 사용하여 생성/업데이트
- 삭제
- admin UI에서 레코드를 편집하거나 API를 사용하여 파일 필드를 0 값으로 설정
- 다중 파일 업로드 필드에서 개별 파일을 삭제하려면 필드 이름 뒤에 -를 붙이고 삭제하려는 파일 이름을 지정
- FormData를 사용하는 경우 파일 필드를 빈 문자열로 설정
- URL
- 업로드된 각 파일은 해당 파일 URL을 요청하여 액세스 가능
http://127.0.0.1:8090/api/files/COLLECTION_ID_OR_NAME/RECORD_ID/FILENAME
- 업로드된 각 파일은 해당 파일 URL을 요청하여 액세스 가능
- protected
- 기본적으로 전체 URL을 알고 있는 경우 모든 파일에 공개적으로 액세스 가능
- 경우에 따라 민감한 파일에 대한 무단 액세스를 방지하기 위해 추가 보안이 필요
- 이를 수행하려면 파일 필드를 보호됨으로 표시한 다음 특수 단기 파일 토큰을 사용하여 파일을 요청
- Storage options
- 기본적으로 로컬 파일 시스템을 사용하여 업로드된 파일을 저장합니다(
pb_data/storage
) - S3 호환 스토리지(AWS S3, MinIO, Wasabi, DigitalOcean Spaces, Vultr Object Storage 등)를 사용 가능
- 기본적으로 로컬 파일 시스템을 사용하여 업로드된 파일을 저장합니다(
Working with relations
Use as framework
- Go 또는 JavaScript로 자신만의 맞춤형 앱 비즈니스 로직을 작성하고 휴대용 백엔드를 유지할 수 있는 프레임워크로 사용 가능
- Extend with Go
- 문서화가 더 잘 되어 있음
- 애플리케이션 흐름을 더 효과적으로 제어 가능
- Extend with JavaScript
- Go API를 둘러싼 플러그형 래퍼
- 내부적으로 Go 기능을 호출
- 약간의 성능 저하 발생 가능
- JS VM은 Go API를 미러링하기 때문에 병목 현상이 발생 가능
- 많은 코드 변경 없이 Go로 점진적 마이그레이션 가능
- 너무 많은 사용자 정의 코드를 작성하지 않고 기능을 빠르게 탐색 가능
- Go API를 둘러싼 플러그형 래퍼