GraphQL API와의 상호작용
GraphQL API와의 상호작용WordPress에서 다른 PHP 프레임워크 또는 CMS로 앱 마이그레이션

WordPress에서 다른 PHP 프레임워크 또는 CMS로 앱 마이그레이션

Gato GraphQL이 제공하는 GraphQL 스키마에는 WordPress 데이터를 가져오는 필드들이 포함되어 있습니다: 게시물, 사용자, 댓글, 태그, 카테고리 등.

PHP 리졸버가 WordPress 데이터를 가져오는 코드는 WordPress에 의존하며, 해당 코드는 WordPress 이외의 앱에서는 실행할 수 없습니다.

그러나 Gato GraphQL에서는 이러한 리졸버 각각이 2개의 패키지로 구현되어 있습니다:

  1. "바닐라" PHP 패키지: 모든 범용 코드를 포함
  2. WordPress 전용 패키지: 해당 리졸버를 처리하는 WordPress 메서드의 실제 호출을 포함

예를 들어, 다음 GraphQL 쿼리에서:

{
  posts {
    id
    title
  }
}

...게시물을 가져오는 로직은 다음으로 구성됩니다:

  1. Root.posts 필드: 범용 posts 패키지에 존재합니다
  2. get_posts 메서드를 통한 WordPress용 처리: WordPress 전용 posts-wp 패키지에 존재합니다.

비WordPress/WordPress 패키지 간 코드 분할은 약 80/20%로, 코드의 80%는 다른 프레임워크/CMS에서도 재사용 가능하며, 재구현이 필요한 코드는 20%에 불과합니다.

또한, Gato GraphQL의 모든 기능은 모듈을 통해 제공되며, 모듈은 자유롭게 활성화 및 비활성화할 수 있습니다.

스키마 모듈
스키마 모듈

모듈은 보안 목적으로 구현된 기능입니다: 공개 API에서 사용자 데이터를 노출할 필요가 없는 경우, Users 모듈을 비활성화하면 해당 필드(예: Root.users)가 스키마에 추가되지 않습니다.

모듈은 기반이 되는 PHP 패키지에 직접 매핑됩니다. 따라서 Gato GraphQL을 독립형 앱으로 실행할 때, 필요한 모듈/패키지만 선택적으로 로드하고 나머지는 로드하지 않을 수 있습니다.

예를 들어, 애플리케이션이 게시물, 카테고리, 태그 데이터만 출력하는 경우, 로드해야 하는 것은 posts-wp, categories-wp, tags-wp 패키지(및 해당 의존성)뿐입니다.

그런 다음 WordPress에서 (예: Laravel이나 Symfony로) 마이그레이션할 때, 새 프레임워크/CMS를 위해 재구현이 필요한 것은 그 3개의 WordPress 전용 패키지뿐이며, 그 외에는 아무것도 필요하지 않습니다.