Rumah hujung hadapan web tutorial js Seronok dengan API Buku Kulit Keras: Rujukan pantas

Seronok dengan API Buku Kulit Keras: Rujukan pantas

Oct 26, 2024 pm 06:41 PM

Saya adalah pengguna Goodreads yang lama, tetapi sentiasa mahu mencuba sesuatu yang lebih baik apabila menjejaki buku saya. Jadi saya baru-baru ini mula menggunakan Hardcover, pesaing yang dikendalikan oleh pasukan indie kecil. Ia masih di peringkat awal, dan saya tahu sukar untuk mengalahkan sesuatu yang sebesar Goodreads, tetapi saya berharap!

Salah satu perkara hebat tentang Kulit Keras ialah, tidak seperti Goodreads, ia mempunyai API yang boleh digunakan secara percuma dan membolehkan anda membuat pertanyaan untuk sebarang data pada buku yang disimpan dalam Kulit Keras. Ia juga boleh digunakan untuk melakukan apa sahaja yang anda boleh lakukan sendiri dalam UI Kulit Keras, seperti mengemas kini status buku anda
membaca, menambah buku pada senarai dan banyak lagi.

Bagaimana saya menggunakan API Hardcover

Sekarang saya menggunakan API untuk menjana bahagian ulasan buku tapak saya. Saya mengambil semua ulasan saya daripada Kulit Keras, dan saya menyimpannya dalam fail JSON. Saya kemudian mengulangi ulasan dalam senarai ini dan memaparkan semuanya pada halaman.

Saya tidak terlalu pasti apa yang perlu dilakukan tentang ulasan yang benar-benar pendek, jadi buat masa ini saya telah memutuskan untuk memberikan ulasan sebagaimana adanya pada halaman jika mereka di bawah 360 aksara, dan memautkan ke halaman yang berasingan jika mereka lebih daripada itu.

Fun with Hardcover

Saya turut menambah bar carian, yang akan mencari melalui semua ulasan saya dan saya telah menyediakan beberapa pengaburan teks jika terdapat spoiler pada ulasan itu.

Fun with Hardcover

Pada masa hadapan saya ingin menambah cara untuk menapis mengikut rating bintang dan mengikut genre juga.

Bermula dengan API Hardcover

API Hardcover juga masih dalam mod akses awal dan belum ada sebarang dokumentasi yang betul, jadi dalam siaran ini saya akan membincangkan beberapa pertanyaan yang saya dapati berguna setakat ini. Pelayan Discord Hardcover juga merupakan tempat yang bagus untuk mendapatkan jawapan kepada soalan anda.

Anda perlu pergi ke halaman tetapan anda terlebih dahulu dan dapatkan kunci API Kulit Keras anda. Kemudian anda boleh menguji pertanyaan anda dalam konsol GraphQL Hardcover.

Mendapatkan semua buku yang telah anda baca

Bermula dengan pertanyaan GraphQL asas, kami boleh menapis menggunakan status_id untuk mendapatkan senarai tajuk semua buku yang telah anda tandai sebagai "baca" dalam Kulit Keras:

{
  me {
    user_books(where: {status_id: {_eq: 3}}) {
      rating
      book {
        title
      }
    }
  }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kami telah membungkusnya dalam diri saya yang boleh anda gunakan untuk membuat pertanyaan tentang apa-apa sahaja yang khusus untuk pengguna anda.

Cara nilai status_id berfungsi ialah:

  • 1: Buku “mahu membaca”
  • 2: Buku "sedang membaca"
  • 3: Buku "baca"
  • 5: Buku “A tak habis”

Mendapatkan pengarang buku

Jika anda mencari cached_contributors, anda akan mendapat tatasusunan yang mengandungi senarai "penyumbang" kepada buku. Ini akan mengandungi set data yang telah ditetapkan, seperti nama, ID dan imej penyumbang.

{
  me {
    user_books(where: {status_id: {_eq: 3}}) {
      rating
      book {
        title
      }
    }
  }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sebab mereka adalah "penyumbang" dan bukan "pengarang" kerana ia juga boleh mengandungi nama orang yang telah menterjemah buku itu. Jika terdapat berbilang pengarang, mereka juga akan berada dalam senarai. Jika anda menyoal buku fiksyen biasa dengan seorang pengarang, menggunakan item pertama dalam senarai biasanya boleh dilakukan.

Versi cache lebih pantas untuk ditanya, tetapi jika terdapat sesuatu yang khusus yang anda mahukan, anda juga boleh membuat pertanyaan tentang sumbangan bukan cache:

book {
  cached_contributors
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Mendapatkan URL Kulit Keras buku

Jika anda ingin mendapatkan pautan buku pada Kulit Keras, anda boleh bertanya untuk slugnya:

book {
  title
    contributions {
      author {
        name
       }
    }
 }
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Slug ialah rentetan selepas nama domain tapak web, mis. pada emgoto.com/hardcover-book-api, bit "hardcover-book-api" ialah slug.

Jadi sebaik sahaja anda mendapat slug, anda hanya perlu menambah https://hardcover.app/books/ pada permulaannya untuk mencipta URL Hardcover anda.

Mendapatkan tag genre pada buku

Sistem tag genre dalam Kulit Keras dijana pengguna. Anda boleh membuat pertanyaan pada cached_tags, yang akan mengembalikan teg kepada anda mengikut tertib daripada yang paling banyak ditag kepada yang paling sedikit.

book {
  slug
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Setelah anda mempunyai senarai penuh teg, anda boleh menggunakan cached_tags['Genre'] untuk mendapatkan yang khusus genre.

Jika ramai orang telah menandakan buku tertentu sebagai fiksyen, itu akan menjadi genre pertama yang muncul dalam senarai. Menariknya orang suka menandai buku mereka sebagai fantasi, jadi genre ini sering muncul sebelum tag fiksyen. Orang ramai suka menandai buku mereka sebagai fantasi, sehinggakan buku sci-fi seperti Dune malah mempunyai teg sci-fi dan fantasi juga.

Jika anda akan menggunakan data ini, saya syorkan melakukan sedikit pembersihan padanya terlebih dahulu. Contohnya, jika buku itu mempunyai kedua-dua fantasi dan sci-fi sebagai teg genre, hanya gunakan yang didahulukan dalam senarai dan buang yang satu lagi, kerana itu lebih mungkin tepat.

Menambahkan buku pada senarai "untuk dibaca" anda

Setakat ini saya hanya menyentuh tentang mengambil data, tetapi anda juga boleh menggunakan API Hardcover untuk memanipulasi data - sudah tentu anda tidak boleh menyentuh perkara orang lain, tetapi apa sahaja yang anda boleh lakukan pada akaun Hardcover anda sendiri adalah permainan yang adil .

Jika anda mempunyai ID buku, anda boleh menambahkannya pada senarai “untuk membaca” anda dengan menetapkan status_idnya kepada 1:

book {
  cached_tags
}
Salin selepas log masuk
Salin selepas log masuk

Mendapat ulasan buku anda

Inilah yang saya gunakan untuk mengambil semua ulasan yang telah saya tulis dalam Kulit Keras:

{
  me {
    user_books(where: {status_id: {_eq: 3}}) {
      rating
      book {
        title
      }
    }
  }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Hampir semua buku dan ulasan saya diimport daripada Goodreads, dan saya fikir kadangkala data menjadi kucar-kacir dalam import. Saya mendapati bahawa mengisih mengikut tarikh_tambah dan disemak_di adalah lebih tepat.

Saya menggunakan nilai review_raw untuk mendapatkan teks ulasan, yang tidak termasuk sebarang pemformatan seperti baris baharu. Malangnya, ini bermakna jika anda mempunyai berbilang perenggan dalam ulasan anda, API mengeluarkan semuanya sebagai satu perenggan panjang seperti ini:

book {
  cached_contributors
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dengan JavaScript, saya mengatasinya dengan melakukan regex seperti berikut:

book {
  title
    contributions {
      author {
        name
       }
    }
 }
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika terdapat sebarang titik tanpa ruang selepasnya, anda boleh membuat tekaan bahawa ini sepatutnya perenggan baharu dan tambahkan dua baris baharu nn. Yang mencipta perenggan baharu.

Keburukan lain ialah tag spoiler juga tiada, jadi anda perlu menambahnya secara manual.

Terdapat juga nilai review_html, yang saya fikir mungkin lebih berguna, tetapi malangnya nilai itu selalu menjadi batal bagi saya. Begitu juga, jika anda mempunyai ulasan dengan spoiler, terdapat nilai ulasan_mempunyai_spoiler, tetapi untuk semua buku yang saya import daripada Goodreads, nilai ini adalah palsu jadi anda mungkin tidak boleh bergantung padanya.

Mencari buku mengikut tajuk dan/atau pengarang

Carian buku kulit keras agak tepat, tetapi mereka tidak mempunyai versi 1-1 ini dalam API mereka. Terdapat banyak cara anda boleh mencuba dan meniru gelagat carian mereka, tetapi cara cepat untuk bermula adalah dengan mencari pada tajuk, menggunakan _eq:

book {
  slug
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Saya memesan senarai buku mengikut users_read_count, kerana kemungkinan buku yang dipanggil Dune dengan bilangan pembaca tertinggi akan menjadi Dune yang anda cari.

Jika anda ingin menapis mengikut tajuk dan pengarang, pertanyaan penapis akan kelihatan seperti ini:

book {
  cached_tags
}
Salin selepas log masuk
Salin selepas log masuk

Jika anda tidak mahu melakukan padanan rentetan yang tepat, anda boleh menggunakan pertanyaan _ilike sebaliknya, yang tidak sepadan pada kes, jadi menggunakan huruf kecil masih berfungsi:

mutation addBook {
  insert_user_book(object: {book_id: 123, status_id: 1}) {
    id
  }
}
Salin selepas log masuk

Anda juga boleh menggunakan % aksara sebagai kad bebas dengan _ilike, jadi anda boleh melakukannya

{
  me {
    user_books(
      where: { _and: [ 
        {has_review: {_eq: true}},
        {status_id: {_eq: 3 }}
      ]}
      order_by: [
        { date_added: desc },
        { reviewed_at: desc }
      ]
    ) {
      reviewed_at
      date_added
      review_raw
      rating
      book {
        title
      }
    }
  }
}
Salin selepas log masuk

Yang akan sepadan dengan mana-mana pengarang yang mengandungi perkataan "terus terang".

Sebagai nota sampingan, memandangkan Kulit Keras menggunakan Hasura, Googling untuk "cara melakukan X dalam Hasura" biasanya akan memaparkan cara anda boleh melakukan pertanyaan yang lebih rumit ini.

Mendapatkan buku dalam Senarai Kulit Keras anda

Serta senarai standard "mahu membaca" dan "membaca", Kulit Keras juga mempunyai ciri senarai tersuai yang berasingan. Untuk mengambil semua senarai anda dan buku di dalamnya, anda boleh melakukan perkara berikut:

this is the end of one paragraph.And this is the start of the next
Salin selepas log masuk

Menambah buku pada senarai

Jika anda ingin menambahkan buku pada senarai, mula-mula anda perlu mengambil ID senarai dan ID buku itu. Kemudian ia mudah seperti berikut:

{
  me {
    user_books(where: {status_id: {_eq: 3}}) {
      rating
      book {
        title
      }
    }
  }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Membuat panggilan API dengan JavaScript

Sebaik sahaja anda mahu keluar dari konsol GraphQL, anda boleh membuat panggilan API menggunakan fetch(). Sebagai contoh yang sangat cepat, inilah saya mengambil semua ulasan saya (saya telah meringkaskannya sedikit):

book {
  cached_contributors
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Petua pro pengaturcaraan yang perlu saya buat untuk membina panggilan pengambilan adalah lebih mudah adalah jika anda:

  • Pergi ke Kulit Keras
  • Cari graphql dalam tab Rangkaian
  • Cari yang kelihatan berguna dan mengembalikan maklumat
  • Klik kanan panggilan rangkaian > Salin > Salin sebagai ambil

Ia akan menyalin untuk anda panggilan ambil yang serupa dengan panggilan yang saya tampalkan di atas, yang kemudiannya boleh anda gunakan dalam kod anda sendiri.

Fun with Hardcover

Nota mengenai pengehadan kadar

Sebaik sahaja anda keluar dari konsol GraphQL dan mula melakukan perkara dalam skrip, anda mungkin menghadapi ralat atau isu mengehadkan kadar jika anda mencuba dan melakukan terlalu banyak perkara pada masa yang sama.

Sebagai contoh, apabila menambah buku baharu pada senarai, saya mendapati bahawa cuba menambah dua pada masa yang sama akan ralat dalam API, mungkin kerana ia cuba menambah dua buku pada kedudukan yang sama dalam senarai.

Begitu juga, jika anda cuba membuat 100 panggilan berbeza untuk mencari buku berdasarkan tajuknya, beberapa panggilan ini akan tamat masa. Jika anda menyebarkannya dan melakukan satu setiap saat seperti berikut, maka anda tidak sepatutnya menghadapi sebarang masalah:

book {
  title
    contributions {
      author {
        name
       }
    }
 }
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Selain itu, jika anda mengambil URL imej buku daripada Kulit Keras, dan kemudian cuba memuatkan imej 100 buku pada masa yang sama pada halaman anda, API akan menilai menghadkan anda dan sesetengah imej tidak akan dimuatkan . Saya syorkan meletakkan loading=lazy dalam teg imej anda seperti:

book {
  slug
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dengan cara ini, imej hanya akan dimuatkan apabila pengguna menatal ke bawah untuk melihatnya.

Dan itu sahaja! Saya berminat untuk melihat ke mana Hardcover seterusnya - Saya berharap ia berfungsi dengan baik, dan akhirnya kami mempunyai pembunuh Goodreads di tangan kami. Jika anda ingin mengikuti saya di Kulit Keras, nasib baik saya telah berjaya merampas pemegang @emma.

Atas ialah kandungan terperinci Seronok dengan API Buku Kulit Keras: Rujukan pantas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1669
14
Tutorial PHP
1273
29
Tutorial C#
1256
24
Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Apr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

JavaScript dan Web: Fungsi teras dan kes penggunaan JavaScript dan Web: Fungsi teras dan kes penggunaan Apr 18, 2025 am 12:19 AM

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

JavaScript in Action: Contoh dan projek dunia nyata JavaScript in Action: Contoh dan projek dunia nyata Apr 19, 2025 am 12:13 AM

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami Enjin JavaScript: Butiran Pelaksanaan Memahami Enjin JavaScript: Butiran Pelaksanaan Apr 17, 2025 am 12:05 AM

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Apr 15, 2025 am 12:16 AM

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Python vs JavaScript: Persekitaran dan Alat Pembangunan Python vs JavaScript: Persekitaran dan Alat Pembangunan Apr 26, 2025 am 12:09 AM

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

Peranan C/C dalam JavaScript Jurubah dan Penyusun Peranan C/C dalam JavaScript Jurubah dan Penyusun Apr 20, 2025 am 12:01 AM

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

See all articles