Skip to main content

api auth

API(Collection) Auth

使用SDK 呼叫 API 需要授權,

不然會出現

400 error

設置授權

  1. 於Collection 點擊左上角的 齒輪 按鈕, 進入 Edit Collection 頁面

picture 2

  1. 選擇API Rules 頁籤 -> 設置授權規則 -> 點擊 Save Changes 按鈕 picture 5

進行測試

使用Postman 測試

  1. 取得Token

picture 6

使用 Curl 呼叫API


curl --location 'http://127.0.0.1:8090/api/collections/users/auth-with-password' \
--header 'Content-Type: application/json' \
--data-raw '{
"identity": "OOOO@gmail.com",
"password": "XXXX"
}'

使用SDK 呼叫API

以下為從前端專案擷取的程式碼, 用來呼叫API, 僅提供範例參考, 無法直接使用。

import { ref, onMounted } from 'vue'
import { useAuthStore } from '~/stores/authStore'
import { ElMessage } from 'element-plus'
import PocketBase from 'pocketbase'

const pb = new PocketBase('http://127.0.0.1:8090')
const authStore = useAuthStore()
const posts = ref([])
const newPost = ref({ title: '', content: '' })
const editingPost = ref({})
const editDialogVisible = ref(false)

// 獲取所有文章
const fetchPosts = async () => {
try {
const records = await pb.collection('posts').getFullList({
sort: '-created',
})
posts.value = records
} catch (error) {
console.error('獲取文章失敗:', error)
ElMessage.error('獲取文章失敗')
}
}

// 創建新文章
const createPost = async () => {
try {
const data = {
...newPost.value,
username: authStore.user.name || authStore.user.email,
user_id: authStore.user.id,
}
await pb.collection('posts').create(data)
ElMessage.success('文章發布成功')
newPost.value = { title: '', content: '' }
await fetchPosts()
} catch (error) {
console.error('發布文章失敗:', error)
ElMessage.error('發布文章失敗')
}
}

// 編輯文章
const editPost = (post) => {
editingPost.value = { ...post }
editDialogVisible.value = true
}

// 更新文章
const updatePost = async () => {
try {
await pb.collection('posts').update(editingPost.value.id, {
title: editingPost.value.title,
content: editingPost.value.content,
})
ElMessage.success('文章更新成功')
editDialogVisible.value = false
await fetchPosts()
} catch (error) {
console.error('更新文章失敗:', error)
ElMessage.error('更新文章失敗')
}
}

// 刪除文章
const deletePost = async (id) => {
try {
console.log(id)
await pb.collection('posts').delete(id)
ElMessage.success('文章刪除成功')
await fetchPosts()
} catch (error) {
console.error('刪除文章失敗:', error)
ElMessage.error('刪除文章失敗')
}
}

onMounted(fetchPosts)