A hospedagem em nuvem permite a criação de estruturas para sites ou aplicativos que podem ser gerenciadas para se adaptarem às necessidades em termos de número de servidores para lidar com a carga atual.
Leia este artigo para aprender a gerenciar uma estrutura de hospedagem em nuvem a com PHP usando o Cloudways API.
Acessando APIs web via HTTP
Se você estiver familiarizado com uma REST API, você deve saber sobre as chamadas HTTP criadas para obter e publicar dados de um cliente para o servidor.
E se você deseja criar um cliente REST API em PHP? Sua resposta poderia ser seguir com CURL. CURL é o método mais utilizado para fazer chamadas HTTP, mas ele impõe vários passos complicados.
Vamos ver uma simples solicitação CURL em PHP:
$url = "https://api.cloudways.com/api/v1"; $resource = curl_init($url); curl_setopt($ch, CURLOPT_HTTPHEADER, ["Accept: application/json, Content-Type: application/json"]); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
Você precisa chamar o método curl_setopt() para definir o cabeçalho e o método de solicitação HTTP específico, como GET, POST, PUT, etc. Não parece simples. Então, qual é a melhor alternativa robusta?
Aqui vem Guzzle. Vamos ver como o Guzzle cria uma solicitação:
$client = new GuzzleHttpClient(); $res = $client->request("GET", "https://api.cloudways.com/api/v1", [ "headers" => [ "Accept" => "application/json", "Content-type" => "application/json" ]]);
Você pode ver que é simples. Você só precisa iniciar o cliente Guzzle e passar um método HTTP e uma URL. Depois disso, passe a matriz de cabeçalhos e outras opções.
Instale o Cliente Guzzle
Guzzle é um cliente PHP HTTP simples que fornece uma maneira fácil de criar chamadas e integração com serviços web. É a camada de abstração padrão usada para enviar mensagens ao servidor. Vários recursos proeminentes do Guzzle são:
- Envia solicitações síncronas e assíncronas.
- Ele fornece uma interface simples para a construção de séries de consulta, solicitações POST, transmissão de uploads e downloads grandes, upload de dados JSON, etc.
- Permite o uso de outras bibliotecas compatíveis PSR7 com Guzzle.
- Permite escrever ambiente e transportar código agnóstico.
- O sistema Middleware permite aumentar e compor o comportamento do cliente.
A maneira preferida de instalar o Guzzle é o Composer. Se você ainda não instalou o Composer, faça o download aqui.
Agora, para instalar o Guzzle, execute o seguinte comando no terminal SSH:
composer require guzzlehttp/guzzle
Este comando irá instalar a versão mais recente do Guzzle no seu projeto PHP. Como alternativa, você também pode defini-lo como uma dependência no arquivo composer.json e adicionar o código a seguir.
{ "require": { "guzzlehttp/guzzle": "~6.0" } }
Depois disso, execute o comando de instalação do composer. Então, você precisa incluir o autoloader e adicionar mais alguns arquivos para usar Guzzle:
require 'vendor/autoload.php'; use GuzzleHttpClient; use GuzzleHttpExceptionRequestException; use GuzzleHttpPsr7Request;
O processo de instalação terminou. Agora é hora de trabalhar com um exemplo real de fazer chamadas HTTP com uma API. Para efeitos deste artigo, trabalharei com a Cloudways API.
O que você pode fazer com a Cloudways API?
Cloudways é um provedor de hospedagem gerenciada para PHP, Magento, WordPress e muitos outros frameworks e CMS. Ele tem uma API que você pode usar para realizar operações CRUD em servidores e aplicativos.
Confira os casos de uso mais populares da Cloudways API para ver como você pode integrá-lo em seus projetos.
Neste artigo, vou fazer chamadas HTTP para realizar operações específicas nos servidores Cloudways.
Enviar as solicitações HTTP
Como mencionei anteriormente, enviar solicitações HTTP no Guzzle é muito fácil. Você só precisa passar o URI base, método HTTP e cabeçalhos.
Se houver uma camada de autenticação na API externa, você também poderá passar esses parâmetros. Da mesma forma, Cloudways API precisa de endereço de e-mail e uma chave API para autenticar usuários e enviar a resposta. Você precisa registrar uma conta Cloudways para obter suas credenciais API.
Vamos começar usando o arquivo CloudwaysAPI.php para configurar o Guzzle para fazer chamadas HTTP. Também usarei os métodos de classe para fazer chamadas HTTP a partir deles.
A URL da API não varia, então usarei o qualificador const com ele. Depois disso, o concatenarei com outros sufixos de URL para obter a resposta. Além disso, tenho declarado variáveis $auth_key, $auth_email que irão manter o email de autenticação e a chave API. $AccessToken manterá o token temporário que será renovado a cada vez.
Criar uma solicitação de postagem para obter token de acesso
O token de acesso será gerado a partir da URL https://api.cloudways.com/api/v1/oauth/access_token toda vez que acessar a API. Isso será definido em $url com matriz de dados adicional que mantém credenciais de autenticação.
Posteriormente, criei uma solicitação POST com a URL de base e a série de consulta. A resposta será descodificada e o token de acesso é salvo para ser usado de todos os métodos.
A solicitação POST para obter o token de acesso está concluída. Além disso, se você observou no tratamento de exceção, eu declarei um método StatusCodeHandling($e), que cuidará dos códigos de resposta (códigos HTTP como 404, 401, 200 etc.) e lançará uma exceção relacionada.
A principal classe cliente está agora concluída. Eu posso estendê-la para criar mais solicitações de HTTP para diferentes casos.
Criar uma solicitação get para buscar todos os servidores
Uma vez que o Usuário é autenticado, eu posso buscar todos os meus servidores e aplicativos da Cloudways. /server é o sufixo concatenado com a URI de base. Desta vez, vou anexar o Token de acesso com a série de Autorização no cabeçalho Guzzle para buscar todos os servidores na resposta JSON. Para fazer isso, eu criei um novo método chamado getServers.
Agora, crie o arquivo index.php e inclua CloudwaysAPIClient.php na parte superior. Em seguida, declaro minha chave API e e-mail, passando para o construtor de classe para finalmente obter os servidores.
include 'CloudwaysApi.php'; $api_key = 'W9bqKxxxxxxxxxxxxxxxxxxxjEfY0'; $email = '[email protected]'; $cw_api = new CloudwaysAPI($email,$api_key); $servers = $cw_api->getServers(); echo ''; var_dump($servers); echo '';
Vamos testá-lo no Postman para verificar se as informações e os códigos de resposta corretos estão sendo buscados.
Nota: Para um ambiente de desenvolvimento local do Windows, você precisa adicionar o arquivo cert.pem à pasta PHP no XAMPP e adicionar ” curl.cainfo =”C:pathtocacert.pem”ao arquivo php.ini
Criar solicitação de exclusão para excluir um servidor
Da mesma forma, você também pode excluir o servidor de nuvem passando o $serverid para o método deleteServer.
Iniciando aplicativos no servidor
Você também pode obter, criar e excluir aplicativos PHP no servidor, passando os parâmetros necessários. Para obter todos os aplicativos, basta usar a URL “/app”.
Para criar um aplicativo em qualquer servidor você precisa passar 4 parâmetros $serverid, $application, $app_version, $app_name:
Estes são alguns dos principais casos de uso para consumir a Cloud API em PHP com guzzle você também pode criar métodos para os seguintes casos de uso:
- CloudwaysBot Api
- Git Api
- Gerenciamento de Chaves SSH Api
- Segurança Api
Baixando e usando a Cloudways API Client Class
A Cloudways client API class pode ser baixada e instalada a partir de um arquivo ZIP ou usando a ferramenta Composer usando as instruções também disponíveis na página de download.
Se você gostou deste artigo, compartilhe-o com outros colegas desenvolvedores. Se você tiver perguntas, poste um comentário aqui.
***
Shahroze Nawaz faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://www.phpclasses.org/blog/package/10326/post/1-How-to-Manage-a-Cloud-Based-Hosting-Structure-with-PHP.html
Powered by WPeMatico