как создать веб-службу php, которая принимает строку и выполняет операции с базой данных

Я пытаюсь создать веб-службу php . Я новичок в PHP. У меня есть приложение Java, которое имеет 2 строковые переменные. Это необходимо сохранить в базе данных сервера для доступа к приложениям php, запущенным с сервера. Поэтому мне нужно поставить его на сервер. Поэтому мне нужно создать веб-сервис. Можно ли отправлять данные в веб-службу? возможно ли записать данные в базу данных с помощью веб-службы?

Related of "как создать веб-службу php, которая принимает строку и выполняет операции с базой данных"

Пример ниже иллюстрирует простой api / webservice в PHP (как сервер, так и клиенты)

Если вам нужна клиентская сторона java (я просто вижу, что кто-то прокомментировал это может быть так), тогда вам нужно будет найти способ скомпрометировать ответ так, чтобы вы могли обрабатывать его с помощью java. Например, если вы общаетесь с PHP в виде javascript jQuery. Ответ веб-службы, вероятно, будет содержать ответ json, который может быть обработан javascript. Я не знаком с java ..

Давайте начнем

Ваш вопрос немного странный в том, как вы описываете, что хотите. Насколько мне известно, веб-служба – это приложение, работающее на сервере, которое обрабатывает действия на основе входящих запросов (get / post / raw data). Эти действия могут извлекать данные, изменять данные или регистрировать данные. означает, что имеется база данных или текстовый файл для сохранения данных для / получения данных.

Если это то, что вы имеете в виду, тогда да .. это возможно. Предположим, сервер a содержит вашу модель данных и список действий add , get andn delete . Первое, что вы, возможно, захотите подумать, – это некая безопасность для вашего сервиса. Основным примером безопасности является использование ключа веб-сервера. Обычно я использую произвольную строку md5 (). Конечно, это не лучшая безопасность, которую вы можете взять, поскольку все, кто знает ключ, могут ее использовать, но я вернусь к этому позже.

Помимо безопасности доступа к вашему веб-серверу, также учитывайте, как вы хотите отправлять свои данные. Вы можете отправить сообщение / получить запрос к своей службе с помощью cURL, но это будет содержать все открытые данные. Другой вариант (немного более скремблированный) заключается в сериализации, прежде чем отправить его … и на один шаг вы можете захотеть base64_encode вашу строку. Это, по крайней мере, создает нечитаемый параметр данных, который переносится на ваш веб-сервер. В лучшем случае вы создадите настраиваемый ключ, доступный в веб-сервисе и сервере, который связывается с веб-сервисом. Этот ключ скремблирует ваш сериализованный параметр и может использоваться для дескремблирования ответа / параметров на обеих сторонах сервиса / пользователя вашего веб-приложения.

Теперь, когда мы знаем, что есть другой сервер, запрашивающий данные из нашего веб-сервиса, мы также можем добавить еще один уровень безопасности в «ключ веб-службы». Каждый запрос вашего веб-сервиса будет отправлять некоторые параметры (например, $_SERVER['REMOTE_ADDR'] ), которые могут использоваться для сопряжения ключа с IP-адресом сервера или доменом. Это ограничивает количество пользователей, которые могут получить доступ к вашему сервису.

Теперь, как бы выглядел очень простой пример?

Первый из них – вебсервис. Вы можете использовать OO-way для обработки входящих запросов на основе параметра, но вы также можете использовать простые файлы PHP:

http://www.webservice.com/api-contacts.php

  • Требуемый параметр: действие
  • Необязательный параметр: id & name

Отправка запроса на api.php с использованием $ _GET ['action'] = 'get' и $ _GET ['id'] = '2' скорее всего вернет ответ, содержащий контакт с id '2'.

Для запроса этих данных есть несколько вариантов. Большинство основных файлов – file_get_contents или cURL. Я считаю, что cURL лучше, поскольку есть гораздо больше вариантов, которые вы можете изменить, чтобы получить именно то, что вы хотите.

Учитывая это ваш скрипт на клиентах:

 $param = array(); $param['action'] = 'get'; $param['id'] = 2; $params = base64_encode(serialize($param)); // generates a scrambled string $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.webservice.com/api-contacts.php'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLTOP_POSTFIELDS, 'data='.$params); $result = curl_exec($ch); curl_close($ch); 

Конечно, api-contacts.php будет base64_decoding строки $ _POST ['data'], а затем unserializing результат:

 $data = unserialize(base64_decode($_POST['data'])); 

а затем некоторые проверки: – есть ли данные $ [действие]? – если да: найдены необходимые параметры (id для delete / get, имя для добавления) – если да: выполните проверки полей (допустимое имя, действительный идентификатор) – если да: вставьте, удалите или получите результат – если да: вернуть ответ

Также ответом будет массив, например

 $response = array( 'result' => 'success', 'data' => mysql_fetch_assoc($getUser) // obviously this is just to illustrate there's userdata in the 'api-contacts.php?action=get&id=2' request. ); 

И последнее, но не менее важное: не забывайте unserialize & base64_decode строку $result на стороне клиента.

Это базовое объяснение того, как я реализую простой веб-сервис для обмена данными между доменами на разных серверах. Конечно, я открыт для всех видов улучшений и советов от других людей.

// Маленькое дополнение:

Причина, по которой я сериализую и base64 кодирую мой ответ, состоит в том, что массив не может быть отправлен как текстовый ответ, также сериализованная строка может вызвать проблемы при получении клиентом.

Кодирование параметров serialization & base64 необязательно, это всего лишь небольшая дополнительная безопасность при передаче данных по протоколу http. Просто используя CURL_OPTPOSTFIELDS, так как «action = get & id = 2» отлично справится! Или, возможно, вы хотите, чтобы служба использовала дружественные URL-адреса и, например, создала URL-адрес www.webservice.com/api-contacts/get/2 .

В качестве типа ответа есть несколько общих вещей: 1) ответ XML 2) ответ JSON 3) сериализованный массив base64_encoded

Но в некоторых случаях достаточно простого текстового ответа «ok». Или вы можете захотеть создать свой веб-сервис, чтобы понимать сообщения HTTP-заголовков, например «200 OK».