Maison  >  Article  >  développement back-end  >  Intégration de microservices pour le développement de services Web PHP et la conception d'API

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

WBOY
WBOYoriginal
2024-05-07 08:48:01674parcourir

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

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();
    }
}

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();
    }
}

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();

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!

Déclaration:
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