Perbedaan antara API dan frontend-backend


23

Saya mencoba menulis situs web bisnis "standar". Dengan "standar", maksud saya situs ini menjalankan HTML5, CSS, dan Javascript biasa untuk front-end, back-end (untuk memproses barang), dan menjalankan MySQL untuk database. Ini adalah situs CRUD dasar: front-end hanya membuat cantik apa pun yang ada di database; backend menulis ke database apa pun yang dimasukkan pengguna dan melakukan pemrosesan. Sama seperti kebanyakan situs di luar sana.

Dalam membuat repositori Github saya untuk memulai pengkodean, saya menyadari saya tidak mengerti perbedaan antara back-end front-end, dan API . Cara lain untuk mengutarakan pertanyaan saya adalah: di mana API masuk ke dalam gambar ini?

Saya akan daftar beberapa detail dan kemudian pertanyaan yang saya miliki - mudah-mudahan ini memberi kalian ide yang lebih baik tentang apa pertanyaan saya yang sebenarnya, karena saya sangat bingung sehingga saya tidak tahu pertanyaan spesifik untuk ditanyakan.

Beberapa detail lebih lanjut:

  • Saya ingin mencoba pola Model-View-Controller. Saya tidak tahu apakah ini mengubah pertanyaan / jawaban.
  • API akan TETAP
  • Saya ingin back-end saya menggunakan API saya sendiri daripada membiarkan back-end untuk menipu dan memanggil permintaan khusus. Saya pikir gaya ini lebih konsisten.

Pertanyaan saya:

  • Apakah front-end memanggil back-end yang memanggil API? Atau apakah front-end hanya memanggil API daripada memanggil back-end?
  • Apakah back-end hanya menjalankan API dan API mengembalikan kontrol ke back-end (di mana back-end bertindak sebagai pengendali utama, mendelegasikan tugas)?

Jawaban panjang dan terperinci yang menjelaskan peran API di samping front-end back-end didorong. Jika jawabannya tergantung pada model pemrograman (model selain pola Model-View-Controller), tolong jelaskan cara berpikir lain tentang API ini. Terima kasih. Saya sangat bingung.

Jawaban:


25

Saya pikir Anda bingung dengan cara istilah API disalahgunakan dan disalahgunakan oleh banyak pengembang web.

  • API berarti Antarmuka Pemrograman Aplikasi, yaitu setiap antarmuka yang ditentukan secara resmi antara sistem yang berbeda (atau bagian dari sistem yang sama).
  • Beberapa waktu lalu, menjadi hal besar bagi startup web untuk menawarkan akses publik ke beberapa data internal mereka melalui API layanan web, biasanya menggunakan REST dan JSON, sehingga memungkinkan pengembang pihak ketiga untuk berintegrasi dengan sistem mereka. Pengembang web mulai menggunakan istilah "API" yang secara khusus berarti (dan hanya) "layanan web yang dapat diakses secara publik", dan menyalahgunakannya untuk memasukkan penerapannya.
  • Dalam hal frontend dan backend, API layanan web ini (dan implementasinya) adalah backend . Beberapa bagiannya dapat diakses secara publik dan yang lain hanya untuk bagian depan Anda.
  • Nama yang berbeda untuk ini adalah "lapisan layanan", yaitu kode itu
    • mewakili layanan yang dipanggil oleh frontend
    • tidak mengandung logika tampilan (toh itu tugas frontend)
    • lebih abstrak dan berbutir kasar daripada tindakan CRUD sederhana (satu panggilan layanan akan sering melibatkan beberapa tindakan CRUD dan harus dieksekusi dalam transaksi basis data).
    • berisi logika bisnis aplikasi

Saya punya pertanyaan yang sangat bodoh. Apakah ini inti dari Arsitektur Berorientasi Layanan?
johnny

@johnny: tidak - SOA adalah sebuah konsep pada tingkat abstraksi yang jauh lebih tinggi, ini lebih tentang bagaimana Anda mengatur fungsionalitas bisnis Anda daripada tentang lapisan teknis.
Michael Borgwardt

Saya tidak akan menyebutnya penyalahgunaan. Mungkin "rebranding"? Itu sama dengan "MVC" yang dalam konteks pengembangan web, sesuatu yang sama sekali berbeda dari pada waktu PARC ketika istilah itu diciptakan.
Thomas Junk

9

Mari kita buat sketsa arsitektur situs web "khas", dengan "front-end" dan "back-end". Dan karena ini adalah situs web, kami juga akan memiliki "klien". (Karena tidak ada cara untuk JavaScript di browser untuk memanggil MySQL di server secara langsung.)

Untuk kejelasan, istilah yang kami gunakan adalah:

  • Klien : Browser yang mendukung HTML5, esp. DOM dan JavaScript di sana dimuat untuk memanipulasi itu.
  • Front-End : Server PHP yang ditunjuk DOM, berisi halaman individual yang diminta dan beberapa titik akses XML atau JSON gaya AJAX.
  • Back-end : Server database, tempat MySQL berjalan.

Untuk program yang dirancang dengan baik, masing-masing komponen ini memiliki API pribadi untuk berkomunikasi dengan yang lain. Kode PHP "front-end" tidak mengeluarkan SELECTpernyataan SQL sewenang-wenang secara langsung, melainkan memanggil prosedur tersimpan, pra-otorisasi SQL, atau bahkan panggilan PHP yang berbeda ke instance PHP yang sama sekali berbeda yang berjalan pada server back-end . Prosedur yang disimpan ini atau panggilan HTTP yang berbeda itu sendiri merupakan API.

Definisi tersebut tidak berubah bahkan jika kita mengizinkan ketidakmurnian dari desain kita. Jika PHPfile Anda menulis dan mengirim string SQL langsung ke MySQL, ITU MASIH API , meskipun sangat tidak biasa yang tidak mungkin Anda ulangi.

Perhatikan bahwa sangat mungkin untuk membuat front-end php Anda benar-benar sinkron, tanpa voodoo AJAX sama sekali. Jika Anda memanggil fungsi PHP eksternal yang sama dalam file sinkron tersebut, Anda bisa menganggapnya menggunakan API yang sama dengan verison sisi klien, meskipun penggunaan istilah "API" di sini mungkin tidak memberikan kejelasan nyata.

Lagipula, API sebagai Antarmuka Pemrograman Aplikasi dan benar-benar merujuk pada setiap kali satu program memanggil di luar prosesnya sendiri. Jika Anda menulis proyek yang memiliki front-end dan back-end, baik itu AJAX / PHP / MySQL seperti di atas atau MS Access / SQL Server, ada baiknya untuk menentukan kejelasan bagaimana Anda akan saling memanggil, jika tidak ada alasan lain selain membuatnya mudah untuk mengetahui ke mana harus mencari ketika sesuatu pecah.

(Dan topik API publik adalah sesuatu yang sama sekali berbeda. Dalam contoh kami di atas, hanya URL yang ditampilkan di klien adalah "API publik." Segala sesuatu yang lain, pada dasarnya, "pribadi." Seperti, Anda tidak mengharapkan kode apa pun di luar kendali Anda untuk memanggil API internal Anda, dan Anda langsung menolak hasil tersebut atau memiliki hak untuk melakukannya di masa depan.


3
Sebenarnya frontend adalah kode sisi klien (HTML, Javascript) dan backend adalah kode server (PHP, Python, Ruby).
Pithikos

-3

API menangani permintaan http seperti GET, POST, FETCH, DELETE ... yang dapat digunakan tergantung pada token akses Anda untuk mengambil data dalam format tertentu seperti json, xml, dll.

"Data" ini dapat digunakan ke dalam aplikasi Anda sendiri untuk mendapatkan API (Application Programming Interface) yang merupakan layanan web yang dapat diakses publik untuk mengumpulkan data yang mungkin menarik bagi sebagian audiens.

Data ini mungkin mengembalikan sekumpulan data yang menyatakan gagal atau mengambil data dari server API itu

API dimaksudkan untuk menjadi ujung belakang sehingga dapat digunakan di lingkungan ujung depan apa pun. Ini berarti dapat digunakan di aplikasi web, android, ios ... yang dapat menangani permintaan https

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.