API vs. Layanan Web [ditutup]

205

Apa perbedaan antara layanan web dan API? Apakah perbedaannya lebih dari protokol yang digunakan untuk mentransfer data? Terima kasih.

keripik
sumber
3
Dengan API, maksud Anda adalah API yang diakses oleh HTTP? Atau hanya API biasa?
Pablo Santa Cruz
1
Lihat juga programmer.SE: Perbedaan antara API Web dan Layanan Web?
hippietrail
Anda pasti bercanda. 122 terbalik dan pertanyaannya terputus karena tingkat pencampuran.
Joshua
Anda mengerti, saya tidak yakin mengapa pertanyaan ini ditutup
keripik

Jawaban:

173

API (Application Programming Interface) adalah sarana yang digunakan pihak ketiga untuk menulis kode yang berinteraksi dengan kode lainnya. Layanan Web adalah jenis API, yang hampir selalu beroperasi melalui HTTP (meskipun beberapa, seperti SOAP, dapat menggunakan transportasi alternatif, seperti SMTP). The Definisi W3C resmi menyebutkan bahwa Web Services tidak harus menggunakan HTTP, tapi ini hampir selalu terjadi dan biasanya diasumsikan kecuali disebutkan sebaliknya.

Untuk contoh layanan web secara khusus, lihat SOAP , REST , dan XML-RPC . Untuk contoh jenis API lain, yang ditulis dalam C untuk digunakan pada mesin lokal, lihat Linux Kernel API .

Sejauh protokol berjalan, API layanan Web hampir selalu menggunakan HTTP (karenanya bagian Web), dan pasti melibatkan komunikasi melalui jaringan. API secara umum dapat menggunakan sarana komunikasi apa pun yang mereka inginkan. API kernel Linux, misalnya, menggunakan Interrupts untuk memanggil panggilan sistem yang terdiri dari API untuk panggilan dari ruang pengguna.

Andrew Cholakian
sumber
8
Apakah Anda menganggap setiap layanan web sebagai API? Bagaimana bila menggunakan AJAX untuk memuat ulang suatu wilayah halaman web dan bukan memuat ulang seluruh halaman? Saya tidak perlu melihat ini sebagai API meskipun layanan web terlibat. Kalau tidak, kita bisa membuat kasus bahwa untuk setiap bit fungsi yang pernah dibuat, baik itu dalam DLL, atau JAR, layanan web, atau kode biasa menjadi semua API. Agar API menjadi API, harus ada pengembang pihak ketiga dan API seharusnya tidak memiliki ketergantungan apa pun dengan produk akhir (aplikasi yang menggunakan API).
Ronald
18
Ya, setiap Layanan Web adalah API. Ya, Layanan Web AJAX adalah API, itu hanya tidak berdokumen dan karenanya tidak benar-benar dimaksudkan untuk konsumsi publik. Tidak setiap API adalah API yang dirancang untuk konsumsi pihak ketiga. Anda dapat memiliki API internal juga.
Ryan Shillington
54

Pada dasarnya, layanan web adalah metode komunikasi antara dua mesin sementara API adalah lapisan terbuka yang memungkinkan Anda untuk memprogram sesuatu.

Anda bisa memiliki API dan metode utama untuk berinteraksi dengan API itu adalah melalui layanan web.

Definisi teknis (milik Wikipedia) adalah:

API

Antarmuka pemrograman aplikasi (API) adalah seperangkat rutinitas, struktur data, kelas objek dan / atau protokol yang disediakan oleh perpustakaan dan / atau layanan sistem operasi untuk mendukung pembangunan aplikasi.

Layanan web

Layanan Web (juga Layanan Web) didefinisikan oleh W3C sebagai "sistem perangkat lunak yang dirancang untuk mendukung interaksi mesin-ke-mesin yang dapat dioperasikan melalui jaringan"

Mark Biek
sumber
4
Saya setuju dengan seseorang yang menolak jawaban saya, tetapi saya ingin tahu mengapa.
Mark Biek
41
Respons Anda menyiratkan bahwa API dan layanan Web berbeda, padahal sebenarnya layanan web adalah jenis API. Karena inti dari pertanyaan ini adalah apa perbedaan antara keduanya, penting untuk tanggapan untuk mengklarifikasi bahwa layanan web adalah jenis API.
Andrew Cholakian
3
Menarik. Saya harus (dengan hormat :)) tidak setuju. Tapi saya sangat menghargai umpan baliknya.
Mark Biek
44

Dalam arti umum, layanan web ADALAH API melalui HTTP. Mereka sering menggunakan JSON atau XML, tetapi ada beberapa pendekatan lain juga.

cgp
sumber
20
Jadi semua layanan web adalah API tetapi tidak semua layanan web API?
chip
13
Benar, API dapat berupa pustaka seperti DLL, JAR atau OCX dll. Mereka juga bisa menjadi distribusi kode sumber seperti PHP api Facebook ...
cgp
10

API adalah antarmuka yang diterbitkan yang mendefinisikan bagaimana komponen A berkomunikasi dengan komponen B.

Misalnya, Doubleclick memiliki Java API yang diterbitkan yang memungkinkan pengguna untuk menginterogasi tabel database untuk mendapatkan informasi tentang kampanye iklan online mereka.

mis. panggil GetNumberClicks (nama pengguna)

Untuk mengimplementasikan API, Anda harus menambahkan file .jar Doubleclick ke jalur kelas Anda. Panggilan itu bersifat lokal.

Layanan web adalah bentuk API di mana antarmuka didefinisikan dengan menggunakan WSDL. Ini memungkinkan panggilan jarak jauh dari suatu antarmuka melalui HTTP.

Jika Doubleclick mengimplementasikan antarmuka mereka sebagai layanan web, mereka akan menggunakan sesuatu seperti Axis2 yang berjalan di dalam Tomcat.

Pengguna jarak jauh akan memanggil layanan web

mis. panggil GetNumberClicksWebService (nama pengguna)

dan layanan GetNumberClicksWebService akan memanggil GetNumberClicks secara lokal.

rbrayb
sumber
Pertanyaan ini benar-benar sudah tua, tetapi saya akan perhatikan bahwa jawaban ini membingungkan API dan antarmuka. API lebih dari antarmuka yang dipublikasikan (yang akan mencakup hal-hal seperti SOAP), itu adalah antarmuka publik untuk aplikasi atau layanan tertentu. Akan lebih akurat untuk mengatakan sesuatu seperti "API adalah komponen yang memiliki antarmuka yang diterbitkan di mana komponen pihak ketiga dapat berinteraksi dengannya."
JDB masih ingat Monica
7

API (Application Programming Interface), formulir lengkapnya sendiri menunjukkan bahwa ini adalah Interface yang memungkinkan Anda untuk memprogram aplikasi Anda dengan bantuan atau dukungan dari beberapa Antarmuka Aplikasi lain yang memperlihatkan semacam fungsionalitas yang berguna untuk aplikasi Anda.

Misalnya, memperlihatkan nilai tukar mata uang yang diperbarui di situs web Anda akan memerlukan beberapa Antarmuka pihak ketiga untuk diprogram kecuali Anda berencana untuk memiliki basis data Anda sendiri dengan nilai tukar mata uang dan pembaruan reguler yang sama. Serangkaian fungsi ini adalah ketika sudah tersedia dengan orang lain dan ketika mereka ingin membaginya dengan orang lain, mereka harus memiliki titik akhir untuk berkomunikasi dengan orang lain yang tertarik dengan interaksi tersebut sehingga mereka menyebarkannya di web dengan cara web- jasa. Titik akhir ini tidak lain adalah antarmuka aplikasi mereka yang dapat Anda program terhadap API tersebut.

Manoj Dwivedi
sumber
4

API adalah integrasi berbasis kode sedangkan layanan web adalah integrasi berbasis pesan dengan standar interoperable yang memiliki kontrak seperti WSDL.

Pingala
sumber
Saya tidak yakin jawaban Anda menambahkan apa pun ke jawaban yang ada.
andrewsi
3

Pikirkan layanan Web sebagai api web. API adalah istilah umum sekarang sehingga layanan web adalah antarmuka untuk fungsionalitas, biasanya yang terkait dengan bisnis, yang dapat Anda peroleh dari jaringan melalui berbagai protokol.

Joshua Belden
sumber
1

Lihat http://en.wikipedia.org/wiki/Web_service ini

Sebagai tautan yang disebutkan maka Web API adalah pengembangan dalam layanan Web yang kemungkinan besar berhubungan dengan Web 2.0, sedangkan layanan berbasis SOAP digantikan oleh komunikasi berbasis REST. Perhatikan bahwa layanan REST tidak memerlukan definisi API-layanan XML, SOAP, atau WSDL sehingga ini sangat berbeda dengan layanan web tradisional.

longbkit
sumber
0

contoh lain: google map api vs google direction api layanan web, sedangkan mantan menyajikan (mengirimkan) file javascript ke situs (yang kemudian dapat digunakan sebagai api untuk membuat fungsi baru), yang selanjutnya adalah layanan web Istirahat memberikan data ( dalam format json atau xml), yang dapat diproses (tetapi tidak digunakan dalam arti api).

anu
sumber
1
Uhm ... javascript dapat dikembalikan sebagai data dan kemudian digunakan sebagai kode, ini bukan kontras yang valid
David C