PHP 웹 서비스 개발 및 API 설계의 마이크로서비스 통합

WBOY
풀어 주다: 2024-05-07 08:48:01
원래의
681명이 탐색했습니다.

필수 확장 및 라이브러리 설치, 사용자 및 게시 데이터 관리를 위한 마이크로서비스 설계, RESTful API를 사용한 엔드포인트 정의, 마이크로서비스 호출 및 API 통합 제공을 위한 PHP 코드 작성 등을 통해 PHP 및 RESTful API를 사용하여 마이크로서비스를 PHP 웹 서비스 및 API 설계에 통합합니다.

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

PHP 웹 서비스 개발 및 API 설계를 위한 실용적인 마이크로서비스 통합

소개

마이크로서비스 아키텍처는 현대적이고 확장 가능한 애플리케이션을 구축하는 데 널리 사용되는 접근 방식입니다. 이는 API를 통해 서로 통신할 수 있는 느슨하게 결합되고 독립적으로 배포된 소규모 서비스로 애플리케이션을 분해합니다. PHP 개발자가 마이크로서비스를 웹 서비스 및 API 디자인에 통합하는 것은 매우 어려운 일입니다. 이 기사에서는 PHP 및 RESTful API를 사용하여 마이크로서비스를 통합하는 방법을 보여주는 실제 사례를 제공합니다.

설치

먼저 필요한 PHP 확장 프로그램과 라이브러리를 설치하세요. RESTful API의 경우 RESTful 웹 서비스 확장이 필요합니다. 마이크로서비스 통신의 경우 GuzzleHTTP 라이브러리가 널리 사용됩니다.

sudo apt-get install php7.2-curl php7.2-restful
composer install guzzlehttp/guzzle
로그인 후 복사

마이크로 서비스 디자인

두 개의 마이크로 서비스 만들기:

  • 사용자 서비스: 사용자 데이터 관리
  • 게시 서비스: 게시 데이터 관리

API 디자인

을 사용하여 설계됨 RESTful API:

  • 사용자 서비스:

    • GET /users - 모든 사용자 가져오기
    • POST /users - 새 사용자 만들기
  • Post 서비스:

    • GET /posts - 모든 게시물 가져오기
    • P OST / 게시물 - 새 게시물 생성 Code
User Service (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 service (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 service code

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 웹 서비스 개발 및 API 설계의 마이크로서비스 통합의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿