PHP Webサービス開発とAPI設計のマイクロサービス統合

WBOY
リリース: 2024-05-07 08:48:01
オリジナル
670 人が閲覧しました

必要な拡張機能とライブラリをインストールし、ユーザーと投稿データを管理するマイクロサービスを設計し、RESTful API を使用してエンドポイントを定義し、マイクロサービスを呼び出して API を提供する PHP コードを作成することにより、PHP と RESTful API を使用してマイクロサービスを PHP Web サービスと API 設計に統合します。統合。

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

#PHP Web サービス開発と API 設計の実践的なマイクロサービス統合

はじめに #マイクロサービス アーキテクチャは、最新のスケーラブルなアプリケーションを構築するための一般的なアプローチです。これは、アプリケーションを、API を介して相互に通信できる、疎結合で独立してデプロイされた小規模なサービスに分解します。 PHP 開発者にとって、マイクロサービスを Web サービスや API 設計に統合することは非常に大きな課題です。この記事では、PHP と RESTful API を使用してマイクロサービスを統合する方法を示す実践的な事例を紹介します。

インストール

まず、必要な PHP 拡張機能とライブラリをインストールします。 RESTful API の場合、

RESTful Web Services

拡張機能が必要です。マイクロサービス通信の場合、GuzzleHTTP ライブラリが一般的な選択肢です。

sudo apt-get install php7.2-curl php7.2-restful
composer install guzzlehttp/guzzle
ログイン後にコピー

マイクロサービス設計

2 つのマイクロサービスの作成:

    ユーザー サービス:
  • ユーザー データの管理
  • 投稿サービス:
  • 投稿データの管理
API 設計

RESTful API 設計の使用:

  • ユーザー サービス:

    GET /users - すべてのユーザーを取得
    • POST /users - 新しいユーザーを作成
  • 投稿サービス:

    GET /posts - すべての投稿を取得します
    • POST /posts - 新しい投稿を作成します
PHP コード

ユーザー サービス (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();
    }
}
ログイン後にコピー

ポスト サービス ( 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();
    }
}
ログイン後にコピー

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();
ログイン後にコピー

以上がPHP Webサービス開発とAPI設計のマイクロサービス統合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!