분류 php

오픈 소스 API 관리 플랫폼

컨텐츠 정보

  • 조회 334 (작성일 )

본문

Fusio는 오픈 소스 API 관리 및 서버리스 플랫폼으로서 자체 호스팅 되고 공급 업체에 독립적인 동시에 훌륭한 API를 구축하는 데 도움이 됩니다.


https://github.com/apioo/fusio


API 관리 및 기능 


Fusio는 특정 작업을 실행하는 경로를 구성 할 수 있는 API 관리 플랫폼입니다. 액션은 비즈니스 로직을 트리거합니다. 이는 클래식 프레임 워크의 컨트롤러와 같으며, 라우팅 호출 또는 RPC를 통해 실행될 수 있는 서버리스 람다 함수로 생각할 수도 있습니다. Fusio는 API 관리 수명주기의 여러 측면을 다루므로 API의 실제 비즈니스 로직 작성에 집중할 수 있습니다. 다음 기능 목록은 첫 번째 개요를 제공합니다.


OpenAPI 생성 

Fusio는 정의 된 경로에 대한 OpenAPI 사양을 자동으로 생성합니다.


SDK 생성 

Fusio는 정의 된 스키마를 기반으로 API 용 클라이언트 SDK를 자동으로 생성 할 수 있습니다.


구독 지원 

Fusio에는 API에 대한 게시 / 구독을 구축하는 데 도움이 되는 구독 계층이 포함되어 있습니다.


속도 제한 

Fusio는 사용자 또는 앱에 따라 제한 요청을 평가하는 방법을 제공합니다.


권한 부여 

Fusio는 API 인증에 OAuth2를 사용합니다.


RPC 지원 

Fusio는 RPC 지원을 제공하며, 생성 한 모든 작업은 JsonRPC를 통해 호출 할 수도 있습니다.


수익 창출 

Fusio는 특정 경로에 대한 요금을 청구하는 간단한 결제 시스템을 제공합니다.


버전 관리 

다른 버전의 엔드 포인트를 정의 할 수 있습니다.


확인 

Fusio는 TypeSchema를 사용하여 들어오는 요청 데이터를 자동으로 검증합니다.


Analytics 

Fusio는 모든 API 활동을 모니터링하고 대시 보드에 표시합니다.


사용자 관리 

Fusio는 새로운 사용자가 GitHub, Google, Facebook 또는 일반 이메일 등록을 통해 새 계정에 로그인하거나 등록 할 수 있는 개발자 앱을 제공합니다.


Logging 

엔드 포인트에서 발생하는 모든 오류가 기록되고 요청의 모든 정보를 포함하여 백엔드에서 볼 수 있습니다.


연결 

Fusio는 외부 서비스에 연결하기 위한 어댑터 시스템을 제공합니다. 기본적으로 HTTP 및 SQL 연결 유형을 제공하지만 MongoDB, Amqp, Cassandra와 같은 다른 많은 유형을 사용할 수 있습니다.


Action 

Fusio에는 다양한 소스를 기반으로 API를 구축하는 데 도움이 되는 작업 에코 시스템이 포함되어 있습니다. 즉, SQL-Table 작업은 데이터베이스 테이블을 기반으로 API를 제공합니다.


Migration 

Fusio에는 배포시 데이터베이스 스키마를 변경할 수 있는 마이그레이션 시스템이 있습니다.


Testing 

Fusio는 로컬 웹 서버를 설정하지 않고도 모든 엔드 포인트 응답을 테스트 할 수 있는 API 테스트 케이스를 제공합니다.


서버리스 및 공급 업체 독립성 


서버리스는 확장 가능한 API를 구축하기 위한 훌륭한 패러다임입니다. 가장 큰 단점은 앱이 서버리스 공급자에 잠겨 있다는 것입니다 (공급 업체 고정). 공급자를 전환하려는 경우 앱을 다른 공급 업체로 이동하기가 어렵습니다.


Fusio는 자체 베어 메탈 서버에서 호스팅 할 수 있는 PHP로 작성된 자체 호스팅 플랫폼을 제공하여 이 문제를 해결하려고 하지만 전체 애플리케이션을 서버리스 제공 업체 (예 : AWS)로 이동할 수도 있습니다. Fusio를 사용하여 API를 개발하는 경우 저렴한 자체 호스팅 서버에서 앱 호스팅을 시작하고 실제로 확장 기능이 필요한 경우에만 서버리스로 이동할 수 있습니다.


개발 


Fusio에서 작업에는 API의 비즈니스 로직이 포함됩니다. 즉, 데이터베이스에 데이터를 삽입하거나 끝점에 대한 특정 데이터를 반환합니다. Fusio에는 이미 예제 Todo 작업이 포함되어 있습니다. src/ 폴더를 살펴보십시오. 첫인상을 주기 위해 다음 작업은 할일 항목을 삽입하는 방법을 보여줍니다.


<?php

namespace App\Action\Todo;

use App\Model\Todo;
use Fusio\Engine\ActionAbstract;
use Fusio\Engine\ContextInterface;
use Fusio\Engine\ParametersInterface;
use Fusio\Engine\RequestInterface;

class Insert extends ActionAbstract
{
    public function handle(RequestInterface $request, ParametersInterface $configuration, ContextInterface $context)
    {
        /** @var \Doctrine\DBAL\Connection $connection */
        $connection = $this->connector->getConnection('System');

        $body = $request->getPayload();
        $now  = new \DateTime();

        assert($body instanceof Todo);

        $connection->insert('app_todo', [
            'status' => 1,
            'title' => $body->getTitle(),
            'insert_date' => $now->format('Y-m-d H:i:s'),
        ]);

        return $this->response->build(201, [], [
            'success' => true,
            'message' => 'Insert successful',
        ]);
    }
}


코드에서 우리는 \ Doctrine \ DBAL \ Connection 인스턴스를 반환하는 시스템 연결을 얻습니다. 다른 서비스에 연결할 수 있는 어댑터가 이미 많이 있습니다. 그런 다음 몇 가지 쿼리를 실행하고 응답을 반환합니다.


또한 더 복잡한 앱을 설계하고 구조화하는 방법을 보여주는 Fusio를 사용한 헤드리스 CMS 빌드인 CMS 데모 앱도 있습니다.