Pendahuluan
Artikel ini akan mencakup bagaimana Anda dapat membuat API yang sangat sederhana untuk salah satu proyek Anda. Kita akan menggunakan PHP danMySQL, dan akan menampilkan data dengan API kami dalam dua format: XMLatau JSON.
API berdiri untuk Application Programming Interface. Secara sederhana, adalah cara untuk semua orang (jika Anda memilih demikian) untuk mengakses datawebsite Anda. Sebagai contoh, mari kita mengatakan bahwa Anda memiliki situs web di mana pengguna mengirimkan link yang mereka sukai. Ada banyak kontenmeta yang berhubungan dengan pengajuan awal, dan Anda ingin semua ini menjadi lebih mudah diakses. Ini adalah contoh yang bagus dari tempat di manaAPI dapat melakukan keajaiban. Ambil Twitter sebagai contoh, keberhasilan mereka dapat disebabkan sebagian besar keberhasilan API nya, memberikanpengembang untuk membuat aplikasi mereka sendiri.
A Info Sedikit, Pertama!
Untuk tujuan ini, kita akan menggunakan situasi yang saya sebutkan di atas: Andamemiliki 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:
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:
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;
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 memulaiscript 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, danmembatasi 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, kamimelayani sampai output yang tepat. Mari kita pergi sedikit lebihmendalam pada masing-masing gaya keluarannya ...
{
"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 darijumlah 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
>
<
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
>
<
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
>
<
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
>
<
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
>
</
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 adalahperlunya sebuah Key API. Jika Anda ingin mengelola data anda, Anda harusmenetapkan kunci alfanumerik minimal 32 karakter, ini akan membiarkan Anda tahu siapa yang mengakses data Anda dan Anda juga dapat menghentikan akses orangdari situs Anda. Bagian penting lainnya ditinggalkan adalah kenyataan bahwa Andaperlu 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 1000permintaan 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 ataumembantu untuk menempatkan project yang sedang di buat.
Post a Comment