kontenhumas-be/docs/BOOKMARK_CHECK_API.md

2.7 KiB

Bookmark Check API Documentation

Overview

API endpoint untuk mengecek apakah suatu artikel sudah di-bookmark oleh user yang sedang login.

Endpoint

Check Bookmark by Article ID

GET /bookmarks/check/{articleId}

Description

Mengecek apakah artikel dengan ID tertentu sudah di-bookmark oleh user yang sedang login.

Parameters

  • articleId (path, required): ID artikel yang akan dicek status bookmarknya

Headers

  • Authorization (required): Bearer token untuk autentikasi user

Response

Success Response (200)
{
  "success": true,
  "messages": ["Successfully checked bookmark status"],
  "data": {
    "isBookmarked": true,
    "articleId": 123,
    "bookmarkId": 456
  }
}
Response Fields
  • isBookmarked (boolean): Status apakah artikel sudah di-bookmark atau belum
  • articleId (integer): ID artikel yang dicek
  • bookmarkId (integer, optional): ID bookmark jika artikel sudah di-bookmark

Error Responses

400 Bad Request
{
  "success": false,
  "messages": ["Invalid article ID"]
}
401 Unauthorized
{
  "success": false,
  "messages": ["user not found"]
}
500 Internal Server Error
{
  "success": false,
  "messages": ["article not found"]
}

Usage Examples

cURL Example

curl -X GET "http://localhost:8080/bookmarks/check/123" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE"

JavaScript Example

const checkBookmark = async (articleId) => {
  try {
    const response = await fetch(`/bookmarks/check/${articleId}`, {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      }
    });
    
    const data = await response.json();
    
    if (data.success) {
      console.log('Is bookmarked:', data.data.isBookmarked);
      if (data.data.bookmarkId) {
        console.log('Bookmark ID:', data.data.bookmarkId);
      }
    }
  } catch (error) {
    console.error('Error checking bookmark:', error);
  }
};

Use Cases

  1. Frontend Bookmark Status: Mengecek status bookmark untuk menampilkan icon bookmark yang sesuai (filled/unfilled)
  2. Conditional UI: Menampilkan tombol "Remove Bookmark" atau "Add Bookmark" berdasarkan status
  3. Bookmark Counter: Menghitung jumlah bookmark yang dimiliki user
  4. Bookmark Management: Validasi sebelum melakukan operasi bookmark lainnya

Notes

  • Endpoint ini menggunakan middleware UserMiddleware untuk mengekstrak informasi user dari JWT token
  • Jika artikel tidak ditemukan, akan mengembalikan error 500
  • Jika user tidak ditemukan dari token, akan mengembalikan error 401
  • Field bookmarkId hanya akan ada jika isBookmarked bernilai true