Използванеуеб услуга (SOAP) с удостоверяване на заявка

Забелязах огромна празна ниша за проучване и дискусия. Бих искал да ви предложа една тясно специализирана тема. Това са уеб услуги и рамки. За второто е казано много, но за първото много по-малко. Е, използването им заедно не е никак трудно.
Има доста подробни и достъпни истории за първия, например тук: Дао на уеб услугата е едно Уеб услугите на теория и практика са две И можете да прочетете и сравните за рамките в тази статия. Той обсъжда използваемостта, сигурността и други качества на рамки като CodeIgniter, CakePHP и Yii. Лично аз се спрях на последното, но работих и с CodeIgniteter.
Тъй като използваме рамка, ние създаваме контролер, който допълва вградения контролер по подразбиране, който ще отговаря изцяло за работата на нашата уеб услуга. Той ще има 2 метода и една функция за удостоверяване. Вижте коментарите за кода за повече подробности. array( 'class' => 'CWebServiceAction' , ), ); >
защитен $authenticated = невярно;
/** * Упълномощаване на soap клиента * @param обект $username * @param обект $password * @return булев резултат от auth * @soap */ публична функция auth($username, $password) // Всяка функция, която връща TRUE или FALSE при проверка на данните за вход и парола // В този случай се проверява чрез стандартния модел за Yi i UserI framework dentity и методът authenticate() // Ако резултатът е положителен, стойността true се предава на $authenticated променлива $identity = new UserIdentity($username, $password); if ($identity->authenticate()) $ this ->authenticated = true ;
/** * @param mixed * @return mixed * @soap * */ публична функция getTest($news) // Елементарен пример за функция за връщане на въведения текст на клиента, без проверка за удостоверяване
return ' Заявката се състои от "' . $news[ 'title' ] . '". Не се изисква удостоверяване' ; >
/** * @param смесен * @return смесен * @soap * */ публична функция getSet($news)
if ($this ->authenticated === true )
$post->време = време(); $post->text = $news[ 'title' ]; $post-> от = $новини[ 'от'];
if (!$post->save()) return ' Полето не трябва да надвишава 50 знака. Записът не е запазен' ; Yii::app()->end(); > return ' Заявката "' . $news[ 'title' ] . '" е изпратена. Удостоверяването премина. Записът е запазен' ; > else return ' Удостоверяването е неуспешно! Опитайте да напишете demo\demo. '; >
Създайте формуляр за заявка
С формуляра за заявка всичко ще бъде много просто. Това е типично въвеждане и изпращане. Действието трябва да ви отведе до мястото, където ще бъде поставен кодът за подаване на заявка за уеб услуга от страна на клиента на вашия хостинг. В моя случай това е/post/send.
Доста основно и без излишни украшения. Сега ще бъде по-интересно - разглеждаме кода за клиента.
$wsu = 'http://schemas.xmlsoap.org/ws/2002/07/utility' ; // данните за вход и парола са предоставени тук като SoapAuth обект $soapHeaders = new SoapHeader($wsu, 'auth' , new SoapAuth( "demo" , "demo" )); $client->__setSoapHeaders($soapHeaders);
// Удостоверяването приключва тук, след което можете да поискате всички функции, които го изискват. ехо"
Вашето запитване
// ПРОСТА ЗАЯВКА // показване на текст в полето за заявка за заглавие
$test = $client->getTest($_POST); ехо $тест;
// ЗАЯВКА С ПРОВЕРКА НА АВТОРИЗАЦИЯ
$test = $client->getSet($_POST); ехо $тест;
Две заявкиgetTest иgetSet работят тук едновременно. Първият просто връща стойността на полето, докато вторият връща и записва в базата данни, ако потребителятdemo с паролаdemo съществува. Ако не, тогава съответната информация се въвежда в замяна от страна на сървъра.
Обобщавайки тази част от статията, трябва да заключим, че за проста клиентска заявка към сървъра без запазване на данни е достатъчно да напишете само два реда:
И за сложна заявка с удостоверяване, трябва да добавите код за валидиране на потребителя и генериране на подходящите заглавки (заглавие).
Без допълнително обожание, вместо просто да показвате обратно въведената стойност в полето, можете да направите заявка за показване на стойността от базата данни чрез ID на записа или каквото и да е друго. Всичко зависи от вашето въображение и елементарни SQL умения. Но за по-сериозни промени, които потребителите на трети страни могат да направят, е необходимо да се провери валидността на потребителите. С тези прости примери можете лесно да настроите елементарен уеб сървър на вашия сайт.
Жив пример
Тук можете да практикувате изпращане на заявки. Но можете да изпращате заявки от вашия хостинг до този URL адрес. http://teutonick.ru/api/quote Резултатите ще бъдат видими тук http://teutonick.ru/post/send.
Използван материал
И тук можете да получите грант за тестов период на Yandex.Cloud. Необходимо е само да въведете "Habr" в полето "секретна парола".
Написа добър текст - получи покана.
Предварителната модерация работи в Sandbox: преди публикуване всички материали преминават през грижовните лъчи на НЛО.
С голяма вероятност те няма да преминат предварителна модерация: