В этой статье я хочу рассказать о том, как можно написать api для своего сервиса. Сделаем сервис по проверки корректности e-mail адреса. То есть, мы будем вызывать нашу api функцию, передавать ей параметр, в данном случае e-mail, а в ответ api должно вернуть результат проверки или код ошибки.
Для начала нужно определиться, что и как будет отвечать api. Я думаю, самый простой способ сделать ответ в формате JSON. А возвращать будем ассоциативный массив, состоящий из трех массивов: status, response и error. Status может иметь только два значения, OK и ERROR – это будет обозначать, как прошло обращение к api. Error – тут мы будем передавать числовой код ошибки, если ошибки нет, то передавать будем 0. Response – этот массив будет хранить интересующий ответ: true – если, e-mail адрес корректный или false, если e-mail не корректный.
В теории, надеюсь все ясно, теперь непосредственно код. Создадим скрипт api.php:
<?php
$status = 'OK';
$response = null;
$error = 0;
if(!isset($_GET['email'])){ // если не получили параметр
$status = 'ERROR';
$error = 1;
}else{
$email = $_GET['email'];
if(preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $email)){ // проверяем корректрость e-mail
$response = true;
}else{
$response = false;
}
}
// массив для ответа
$result = array(
'status' => $status,
'response' => $response,
'error' => $error,
);
echo json_encode($result); // ответ в формате json
?>
Все, наше api готова, теперь попробуем сделать вызов нашей api функции, для этого создадим скрипт api_test.php
<?
$email = 'test@test.ru';
$resp = file_get_contents('http://myService.ru/api.php?email='.$email);
$data = json_decode($resp, true);
if($data['status']=='OK'){
if($data['response']){
echo 'E-mail корректный';
}else{
echo 'E-mail НЕ корректный';
}
}else{
echo 'Код ошибки: '.$data['error'];
}
?>
В скрипте мы пробовали вызывать api в php скрипте, но также можно сделать вызов с помощью java script
<script type="text/javascript">
var email = "test@test.ru";
$.ajax({
url: 'http://myService.ru/api.php?email='+email,
dataType : "json",
success: function (data) {
console.log(data);
if(data['status'] == 'OK'){
if(data['response'] === true){
alert('e-mail корректный');
}else{
alert('e-mail НЕ корректный');
}
}
}
});
</script>