Updated:

1 minute read

개요

  • 사이트 / GitHub
  • 하나의 파일로 구성된 SaaS 및 모바일 앱을 위한 오픈 소스 백엔드
  • 실시간 구독, 내장된 인증 관리, 편리한 대시보드 UI 및 간단한 REST-ish API를 갖춘 내장형 데이터베이스(SQLite)로 구성된 오픈 소스 백엔드


설치


Collections

  • 애플리케이션 데이터
  • 컬렉션 이름과 필드를 사용하여 자동으로 생성되는 일반 SQLite 테이블
  • 레코드
    • 컬렉션의 단일 항목
    • SQL 테이블의 단일 행
  • 타입
    • Base
      • 모든 애플리케이션 데이터를 저장하는 데 사용
      • 3가지 기본 시스템 필드(id, created, updated) 제공
        • ID만 명시적으로 설정 가능
    • View
      • 일반 SQL SELECT 문에서 데이터가 채워지는 읽기 전용 컬렉션
      • 사용자가 일반적으로 집계 또는 기타 사용자 지정 쿼리를 수행할 수 있도록 함
      • create/update/delete 불가
      • 실시간 이벤트를 수신하지 않음
    • Auth
      • Base 컬렉션의 모든 것이 포함
      • 다양한 인증 옵션을 제공


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
  • 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로 점진적 마이그레이션 가능
    • 너무 많은 사용자 정의 코드를 작성하지 않고 기능을 빠르게 탐색 가능


Web APIs reference