Bagaimana cara kerja API web? [Tutup]

17

Saya telah mendengar banyak API web seperti Facebook, Twitter, dll., Yang membantu pihak ketiga mengakses data dan memanipulasinya. Saya ingin tahu cara kerja API web. Apa dasar-dasar API web?

Jika saya ingin membuat API untuk situs saya, sehingga orang dapat mengakses atau memperbaruinya, apa yang harus saya mulai?

Harish Kurup
sumber
1
Bukan berarti ini sangat penting, tetapi bahasa apa yang digunakan oleh situs Anda?
ocodo
Sudahkah Anda membaca dokumentasi untuk API web facebook? developers.facebook.com/docs Jika Anda belum membacanya, mengapa tidak? Jika Anda telah membacanya, pertanyaan spesifik apa yang Anda miliki?
S.Lott
ok yakin saya akan melakukan @ S.Lott!
Harish Kurup

Jawaban:

23

Paling sederhana, Anda membuat satu set permintaan GET / POST yang dapat dipanggil dan dipublikasikan siapa pun informasi tentang URL, parameter, dan efek. DAPATKAN permintaan untuk tugas hanya baca dan permintaan POST untuk apa pun yang akan mengubah data di server.

Tambahkan dalam sistem otentikasi jika diperlukan dan Anda memiliki API Web sederhana.

Sebuah Web API hanya sebuah antarmuka untuk memungkinkan akses ke sistem anda (seperti situs) melalui standar metode HTTP request . Data itu sendiri biasanya dibungkus dalam beberapa format standar (seperti JSON atau XML ) agar mudah ditangani.


Berikut adalah contoh API Web untuk 'TextWise'

Dan McGrath
sumber
baik. format dat mana yang akan menjadi yang terbaik untuk menggunakan JSON atau XML ??
Harish Kurup
1
JSON - XML ​​sangat sulit untuk dimanipulasi dan tidak memberikan keuntungan apa pun atas JSON. Dan dalam XML Anda memiliki overhead yang besar karena Anda harus memiliki tag penutup.
Slawek
1
@ Harish. Sekali lagi, ini adalah salah satu dari 'sepenuhnya tergantung pada tujuan / situasi Anda'. Sedangkan saya mungkin lebih suka format JSON, jika saya melakukannya untuk salah satu sistem kami di tempat kerja, saya akan menggunakan XML karena ia memiliki kemampuan parsing XML inbuilt, tetapi tidak JSON. Ini berarti pemeliharaan kode lebih mudah dan pengembang lain akan terbiasa dengan perintah.
Dan McGrath
1
@ Harish, itu ide yang baik untuk mendukung satu, dan lepaskan dulu, tetapi untuk menyediakan XML dan JSON akan membantu pengguna Anda.
ocodo
Dalam praktiknya XML dan JSON gzip dengan ukuran file yang serupa. Saya melihat kecenderungan bertahap untuk beralih ke JSON (JSON lebih baru dari XML), meskipun saat ini sangat umum untuk menawarkan keduanya. JSON sangat ideal untuk bertukar data sedangkan XML ideal untuk bertukar dokumen.
Brian
5

Saya sebenarnya sedang mengembangkan API untuk platform virtualisasi perusahaan saya sekarang. Anda dapat melakukannya dengan beberapa cara berbeda, tetapi favorit saya (dan rute tercepat untuk mendapatkan sesuatu yang dapat dipahami orang) menggunakan permintaan GET HTTP sederhana dan mengembalikan respons JSON.

URL saya terlihat seperti ini:

domain.com/method/call/subcall?key=key&data=something

Saya kemudian memecah variabel HTTP GET, dan melakukan apa yang penelepon ingin lakukan dengan mereka. Salah satu alasan terbesar saya mendaftar sebagai pengguna beta untuk pengembangan Stack Exchange API adalah bahwa saya tahu itu akan menjadi pengalaman belajar yang luar biasa, dan memang benar begitu .

Biasanya, saya mengembalikan dua array yang dikodekan JSON, satu adalah result, yang pada dasarnya hanya mengatakan jika panggilan berhasil dan memberikan kode kesalahan / string kesalahan jika tidak. Yang lain biasanya baru saja dipanggil data, dan konten yang dijelaskan dalam dokumentasi panggilan tertentu. Selain itu, API berbasis GET jauh lebih mudah untuk menguji dan men-debug.

Ada banyak format lain, seperti SOAP / XMLRPC, saya hanya menemukan bahwa memilih JSON memberi saya kesederhanaan dan kebebasan memilih yang luar biasa.

Misalnya, jika saya perlu mengirim banyak bidang dan tidak ingin berurusan dengan banyak variabel GET, saya bisa melakukan ini (contoh dalam PHP)

$to_send = base64_encode(json_encode($some_array));

Itu mudah didekodekan di sisi lain, memberi saya lusinan variabel untuk bekerja dengan, sementara masih hanya menerima 2 - 3 variabel GET melalui API.

Saya hanya mencoba menjaga agar metode dan panggilan saya tetap singkat dan ringkas, dan mendesainnya sedemikian rupa sehingga setiap panggilan mengembalikan respons 'berhasil atau gagal' seragam, diikuti oleh data yang diminta.

Pos Tim
sumber
2

Itu sebenarnya pertanyaan yang sangat luas. Dalam pengertian yang paling mendasar, API web berfungsi ketika klien (seperti browser Web) membuat permintaan HTTP semacam ke server Web. Server memeriksa permintaan itu untuk mencari tahu apa yang diinginkan pengguna, dan kemudian mengembalikan data dalam beberapa format (seperti halaman) yang kemudian diperiksa klien untuk mendapatkan apa yang diinginkannya. Ini adalah satu-satunya hal yang sama-sama dimiliki oleh Web API; Saya menyadari bahwa ini tidak benar-benar menjawab pertanyaan Anda, tetapi saya ingin memberikan alasan mengapa pertanyaan itu begitu luas.

Ada berbagai cara klien dapat memformat permintaannya, atau server dapat memformat responsnya, dan agar hal itu masuk akal, klien dan server harus menyetujui beberapa aturan dasar. Secara umum, saat ini ada dua gaya yang sangat umum yang digunakan untuk hal semacam ini.

Panggilan Prosedur Jarak Jauh (RPC)

Dalam API gaya RPC, biasanya hanya ada satu URL untuk seluruh API. Anda menyebutnya dengan POSTing dokumen yang berisi informasi tentang apa yang ingin Anda lakukan, dan server mengembalikan dokumen yang memiliki apa yang Anda inginkan. Dalam istilah komputasi umum, dokumen permintaan biasanya memiliki nama fungsi dan beberapa argumen.

Beberapa standar untuk gaya API ini termasuk XML-RPC dan SOAP. Standar-standar ini mencoba membuat format yang dapat digunakan untuk menggambarkan panggilan fungsi yang Anda buat, atau bahkan untuk menggambarkan keseluruhan API.

Transfer Negara Representatif (REST)

Dalam API gaya REST, Anda tidak memiliki URL untuk API sebagai ruang nama : server, atau folder di dalam server, tempat banyak objek berbeda berada, dan setiap URL di dalam namespace ini menjadi bagian API. Daripada memberitahu server bahwa Anda ingin menggunakan API, URL memberitahu server apa yang Anda ingin menggunakan API pada . Anda kemudian menggunakan metode HTTP, dan mungkin badan permintaan, untuk menjelaskan apa yang ingin Anda lakukan pada objek itu: GET (mengambil sesuatu yang sudah ada di sana), POST (membuat sesuatu yang baru), PUT (ganti sesuatu yang sudah ada di sana), atau HAPUS (singkirkan sesuatu yang sudah ada di sana). Ada beberapa kata kerja lain yang dapat Anda gunakan, tetapi sejauh ini yang paling umum.

Sejauh ini, saya belum menyebutkan format standar untuk REST. Secara teori, Anda bisa menggunakan hampir semua format. HTTP sudah menyediakan untuk mengatakan apa yang ingin Anda lakukan dan apa yang ingin Anda lakukan, sehingga format badan permintaan bisa apa saja: beberapa representasi dari objek yang ingin Anda buat atau ganti. Namun dalam praktiknya, penulis REST cenderung menyetujui format, karena akan sulit untuk memahami setiap format yang mungkin.

Spooniest
sumber