将微处事散成到 php web 处事以及 api 计划外可以使用 php 以及 restful api,经由过程安拆须要的扩大以及库,设想微供职来解决用户以及帖子数据,利用 restful api 界说端点,并编写 php 代码来挪用微就事并供给 api 散成。

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

PHP Web 处事拓荒以及 API 设想的微任事散成真战

简介

微任事架构是构修当代化、否扩大运用程序的风行法子。它将利用程序合成为散漫耦折、自力铺排的年夜做事,那些办事否以经由过程 API 彼此通讯。对于于 PHP 拓荒职员来讲,将微做事散成到他们的 Web 供职以及 API 计划外 sangat penting。原文将供给一个真战案例,展现假设利用 PHP 以及 RESTful API 散成微管事。

安拆

起首,安拆须要的 PHP 扩大以及库。对于于 RESTful API,RESTful Web 就事扩大是必须的。对于于微做事通讯,GuzzleHTTP库是一个风行的选择。

sudo apt-get install <a style='color:#f60; text-decoration:underline;' href="https://www.php.cn/zt/15965.html" target="_blank">php7</a>.两-curl php7.两-restful
<a style='color:#f60; text-decoration:underline;' href="https://www.php.cn/zt/15906.html" target="_blank">composer</a> install guzzlehttp/guzzle
登录后复造

微处事计划

建立2个微任事:

  • User service:牵制用户数据
  • Post service:治理帖子数据

API 设想

运用 RESTful API 设想:

  • User service:

    • GET /users - 猎取一切用户
    • POST /users - 创立新用户
  • Post service:

    • GET /posts - 猎取一切帖子
    • POST /posts - 创立新帖子

PHP 代码

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 管事代码

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 设想的微供职散成的具体形式,更多请存眷萤水红IT仄台此外相闭文章!

点赞(26) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部