Tuesday, September 20, 2016

Cara Membuat API sederhana dengan PHP dan MySQL




Pendahuluan  

Artikel ini akan mencakup bagaimana Anda dapat membuat API yang sangat sederhana untuk salah satu proyek Anda. Kita akan menggunakan PHP dan MySQL, dan akan menampilkan data dengan API kami dalam dua format: XML atau JSON.

API berdiri untuk Application Programming Interface. Secara sederhana, adalah cara untuk semua orang (jika Anda memilih demikian) untuk mengakses data website Anda. Sebagai contoh, mari kita mengatakan bahwa Anda memiliki situs web di mana pengguna mengirimkan link yang mereka sukai. Ada banyak konten meta yang berhubungan dengan pengajuan awal, dan Anda ingin semua ini menjadi lebih mudah diakses. Ini adalah contoh yang bagus dari tempat di mana API dapat melakukan keajaiban. Ambil Twitter sebagai contoh, keberhasilan mereka dapat disebabkan sebagian besar keberhasilan API nya, memberikan pengembang untuk membuat aplikasi mereka sendiri.

A Info Sedikit, Pertama!  
Untuk tujuan ini, kita akan menggunakan situasi yang saya sebutkan di atas: Anda memiliki database dan Anda ingin mereka untuk dapat diakses oleh khalayak yang lebih besar.

Kami akan melakukan hal ini dengan menyediakan data ini dalam API kami:  
  • ID 
  • Nama  
  • Poster resep  
  • Info Cepat (# menit persiapan, # dari menit total waktu)  
  • Link ke Resep di Website kami

Mari kita mulai!

Ke Kode ...
Saya sarankan Anda menggunakan struktur URL berikut (atau yang serupa):

     http://api.example.com/recipes/

Setelah Anda memiliki struktur ini, membuat file baru di * recipes
* folder bernama * get.php *. Ini adalah file utama yang akan diminta oleh pengembang. Tambahkan baris berikut ke berkas ini: 

 

<?php
if(isset($_GET['format']) &amp;amp;amp;amp;&amp;amp;amp;amp; intval($_GET['num'])) {
//Set our variables
$format = strtolower($_GET['format']);
$num = intval($_GET['num']);
//Connect to the Database
$con = mysql_connect('localhost', 'root', '') or die ('MySQL Error.');
mysql_select_db('api', $con) or die('MySQL Error.');
//Run our query
$result = mysql_query('SELECT * FROM recipes ORDER BY `recipe_id` DESC LIMIT ' . $num, $con) or die('MySQL Error.');
//Preapre our output
if($format == 'json') {
$recipes = array();
while($recipe = mysql_fetch_array($result, MYSQL_ASSOC)) {
$recipes[] = array('post'=>$recipe);
}
$output = json_encode(array('posts' => $recipes));
} elseif($format == 'xml') {
header('Content-type: text/xml');
$output  = "<?xml version=\"1.0\"?>\n";
$output .= "<recipes>\n";
for($i = 0 ; $i < mysql_num_rows($result) ; $i++){
$row = mysql_fetch_assoc($result);
$output .= "<recipe> \n";
$output .= "<recipe_id>" . $row['recipe_id'] . "</recipe_id> \n";
$output .= "<recipe_name>" . $row['recipe_name'] . "</recipe_name> \n";
$output .= "<recipe_poster>" . $row['recipe_poster'] . "</recipe_poster> \n";
$output .= "<recipe_quick_info>" . $row['recipe_quick_info'] . "</recipe_quick_info> \n";
$output .= "<recipe_link>" . $row['recipe_link'] . "</recipe_link> \n";
$output .= "</recipe> \n";
}
$output .= "</recipes>";
} else {
die('Improper response format.');
}
//Output the output.
echo $output;
}
?>

Ini adalah script versi lengkap, hanya untuk mendapatkannya di luar sana, sekarang mari kita menjelaskannya sedikit 
  • Pertama, kita perlu mendapatkan beberapa data dari pengguna: Format apa yang Anda inginkan? Berapa banyak tanggapan yang Anda inginkan?
  •  Ini didefinisikan dalam format variabel GET dan NUM. Untuk memulai script kami, kami memeriksa apakah nilai-nilai ini bahkan disediakan; jika mereka tidak ada, script tidak akan melakukan apa-apa. Jika mereka berdua disediakan, kita melanjutkan dengan menghubungkan ke database, menjalankan query yang relatif sederhana untuk mendapatkan semua baris, mengambilnya dalam urutan dengan id, dan membatasi respon terhadap berapa banyak yang diminta.  
  • Mayoritas script kami diambil oleh proses output. Setelah data dipilih ke dalam variabel, kita perlu mendapatkannya untuk pengguna. Pertama, kita memeriksa apakah pengguna ingin versi JSON atau XML, kami melayani sampai output yang tepat. Mari kita pergi sedikit lebih mendalam pada masing-masing gaya keluarannya ...
 Yang satu ini, untungnya, sangat sederhana. Semua yang kita lakukan adalah menempatkan data ke dalam array, kemudian menggunakan  json_encode() fungsi PHP untuk mengkodekan JSON. Inilah yang saya punya dengan data keluaran JSON: ke dalam array, kemudian menggunakan fungsi handy _json_encode_ function berguna PHP untuk mengkodekan JSON

{"posts":[{"post":{"recipe_id":"20","recipe_name":"Grilled Flounder","recipe_poster":"Billy Bob","recipe_quick_info":"20 minutes prep, 40 minutes total time","recipe_link":"http:\/\/www.example.com\/"}},{"post":{"recipe_id":"19","recipe_name":"Grilled Flounder","recipe_poster":"Billy Bob","recipe_quick_info":"20 minutes prep, 40 minutes total time","recipe_link":"http:\/\/www.example.com\/"}},{"post":{"recipe_id":"18","recipe_name":"Grilled Flounder","recipe_poster":"Billy Bob","recipe_quick_info":"20 minutes prep, 40 minutes total time","recipe_link":"http:\/\/www.example.com\/"}},{"post":{"recipe_id":"17","recipe_name":"Grilled Flounder","recipe_poster":"Billy Bob","recipe_quick_info":"20 minutes prep, 40 minutes total time","recipe_link":"http:\/\/www.example.com\/"}},{"post":{"recipe_id":"16","recipe_name":"Grilled Flounder","recipe_poster":"Billy Bob","recipe_quick_info":"20 minutes prep, 40 minutes total time","recipe_link":"http:\/\/www.example.com\/"}}]}


XML   XML ini sedikit lebih rumit, memerlukan penggunaan sangat kuat (and scary) for() function. Di sini, kita pada dasarnya mengatakan : Selama variabel $i kurang dari jumlah baris maka, lanjut menambahkan ini ke variabel $output kami. Setelah Anda selesai melakukannya, tambahkan satu ke $i variabel. Berikut output saya dapatkan dari ini:
 
<?xml version="1.0"?>
<recipes>
<recipe>
<recipe_id>20</recipe_id>
<recipe_name>Grilled Flounder</recipe_name>
<recipe_poster>Billy Bob</recipe_poster>
<recipe_quick_info>20 minutes prep, 40 minutes total time</recipe_quick_info>
<recipe_link>http://www.example.com/</recipe_link>
</recipe>
 
<recipe>
<recipe_id>19</recipe_id>
<recipe_name>Grilled Flounder</recipe_name>
<recipe_poster>Billy Bob</recipe_poster>
<recipe_quick_info>20 minutes prep, 40 minutes total time</recipe_quick_info>
<recipe_link>http://www.example.com/</recipe_link>
</recipe>
 
<recipe>
<recipe_id>18</recipe_id>
<recipe_name>Grilled Flounder</recipe_name>
<recipe_poster>Billy Bob</recipe_poster>
<recipe_quick_info>20 minutes prep, 40 minutes total time</recipe_quick_info>
<recipe_link>http://www.example.com/</recipe_link>
</recipe>
 
<recipe>
<recipe_id>17</recipe_id>
<recipe_name>Grilled Flounder</recipe_name>
<recipe_poster>Billy Bob</recipe_poster>
<recipe_quick_info>20 minutes prep, 40 minutes total time</recipe_quick_info>
<recipe_link>http://www.example.com/</recipe_link>
</recipe>
 
<recipe>
<recipe_id>16</recipe_id>
<recipe_name>Grilled Flounder</recipe_name>
<recipe_poster>Billy Bob</recipe_poster>
<recipe_quick_info>20 minutes prep, 40 minutes total time</recipe_quick_info>
<recipe_link>http://www.example.com/</recipe_link>
</recipe>
</recipes>
 

Beberapa catatan  Ada beberapa hal catatan dari artikel ini. Setelah Anda memiliki dasar-dasar ini , Anda dapat menambahkan sendiri. Suatu hal utama yang saya berikan adalah perlunya sebuah Key API. Jika Anda ingin mengelola data anda, Anda harus menetapkan kunci alfanumerik minimal 32 karakter, ini akan membiarkan Anda tahu siapa yang mengakses data Anda dan Anda juga dapat menghentikan akses orang dari situs Anda. Bagian penting lainnya ditinggalkan adalah kenyataan bahwa Anda perlu mengelola API ini! Seseorang bisa masuk ke sini, ulangi script ini berulang-ulang dan membawa website Anda ke bawah. Ada banyak alat bantu gratis di luar sana untuk membatasi penggunaan API Anda, dan salah satu yang saya sangat merekomendasikan adalah 3scale. Twitter membatasi API mereka untuk 1000 permintaan per hari, sehingga Anda bisa mendapatkan ide dari apa yang Anda inginkan.
 
kesimpulan  Sederhana, bukan? Menggunakan API adalah cara yang mengagumkan untuk memperluas basis pengguna Anda serta konten Anda di seluruh web. Saya harap artikel ini telah membantu baik Anda yang belajar sesuatu yang baru atau membantu untuk menempatkan project yang sedang di   buat.