В этой статье я хочу рассказать о том, как можно написать 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>
Я вставляю этот код у себя на сайте. Он не работает почему — то. Ничего не изменял
В html форме нужно указать
То есть для работы этого кода нужно бы сделать форму ввода мыла.
Все работает.
В html форме нужно указать в форме action = api.php method=»GET»
То есть для работы этого кода нужно бы сделать форму ввода мыла.
Все работает.