Intégration de microservices pour le développement de services Web PHP et la conception d'API

WBOY
Libérer: 2024-05-07 08:48:01
original
682 Les gens l'ont consulté

Intégrer des microservices dans les services Web PHP et la conception d'API à l'aide de PHP et de l'API RESTful en installant les extensions et bibliothèques nécessaires, en concevant des microservices pour gérer les données des utilisateurs et des publications, en définissant les points de terminaison à l'aide de l'API RESTful et en écrivant du code PHP pour les appeler microservices et fournir une intégration API .

PHP Web 服务开发与 API 设计的微服务集成

Intégration pratique de microservices pour le développement de services Web PHP et la conception d'API

Introduction

L'architecture de microservices est une approche populaire pour créer des applications modernes et évolutives. Il décompose les applications en petits services faiblement couplés et déployés indépendamment qui peuvent communiquer entre eux via des API. Il est très important pour les développeurs PHP d'intégrer des microservices dans leurs services Web et leurs conceptions d'API. Cet article fournira un cas pratique montrant comment intégrer des microservices à l'aide de PHP et de l'API RESTful.

Installation

Tout d'abord, installez les extensions et bibliothèques PHP nécessaires. Pour les API RESTful, l'extension RESTful Web Services est requise. Pour la communication par microservices, la bibliothèque GuzzleHTTP est un choix populaire.

sudo apt-get install php7.2-curl php7.2-restful
composer install guzzlehttp/guzzle
Copier après la connexion

Conception de microservices

Créez deux microservices :

  • Service utilisateur : Gérer les données utilisateur
  • Service de publication : Gérer les données de publication

Conception d'API

Conçu avec l'API RESTful :

  • Service utilisateur :

    • GET /users - Obtenir tous les utilisateurs
    • POST /users - Créer de nouveaux utilisateurs
  • Service de publication :

    • GET /posts - Obtenir tous les messages
    • POST / posts - Créer de nouveaux messages

Code PHP

Service utilisateur (user.php)

<?php

use GuzzleHttp\Client;

class UserService
{
    private $userServiceEndpoint;

    public function __construct(string $userServiceEndpoint)
    {
        $this->userServiceEndpoint = $userServiceEndpoint;
    }

    public function getAllUsers(): array
    {
        $client = new Client();
        $response = $client->get($this->userServiceEndpoint . '/users');

        return json_decode($response->getBody()->getContents(), true);
    }

    public function createUser(array $data): int
    {
        $client = new Client();
        $response = $client->post($this->userServiceEndpoint . '/users', [
            'form_params' => $data
        ]);

        return $response->getStatusCode();
    }
}
Copier après la connexion

Service post (post.php)

<?php

use GuzzleHttp\Client;

class PostService
{
    private $postServiceEndpoint;

    public function __construct(string $postServiceEndpoint)
    {
        $this->postServiceEndpoint = $postServiceEndpoint;
    }

    public function getAllPosts(): array
    {
        $client = new Client();
        $response = $client->get($this->postServiceEndpoint . '/posts');

        return json_decode($response->getBody()->getContents(), true);
    }

    public function createPost(array $data): int
    {
        $client = new Client();
        $response = $client->post($this->postServiceEndpoint . '/posts', [
            'form_params' => $data
        ]);

        return $response->getStatusCode();
    }
}
Copier après la connexion

Code du service Web

api. php

<?php

use UserService;
use PostService;

$userService = new UserService('http://example.com/user-service');
$postService = new PostService('http://example.com/post-service');

$app = new Slim\App();

$app->get('/users', function (Request $request, Response $response, array $args) use ($userService) {
    $users = $userService->getAllUsers();

    return $response->withJson($users);
});

$app->post('/users', function (Request $request, Response $response, array $args) use ($userService) {
    $data = $request->getParsedBody();

    $statusCode = $userService->createUser($data);

    return $response->withStatus($statusCode);
});

$app->get('/posts', function (Request $request, Response $response, array $args) use ($postService) {
    $posts = $postService->getAllPosts();

    return $response->withJson($posts);
});

$app->post('/posts', function (Request $request, Response $response, array $args) use ($postService) {
    $data = $request->getParsedBody();

    $statusCode = $postService->createPost($data);

    return $response->withStatus($statusCode);
});

$app->run();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal