JSON API로 분리된 DRUPAL 8

8246 단어 drupalphpjsonapi

분리된 아키텍처의 이점



분리된 아키텍처는 모놀리식 콘텐츠 관리 시스템의 일부인 문제를 줄이거나 완전히 제거하는 데 큰 역할을 합니다.
CMS 데이터는 프런트 엔드 JavaScript 프레임워크에 노출되고 사용됩니다. 프레임워크는 React.js, Angular.js 등이 될 수 있습니다.

Json API



JSON API에서 소비자는 단일 쿼리로 모든 데이터를 얻을 수 있으며 개체 간의 관계를 추적하고 원하는 출력을 한 번에 반환할 수 있습니다.
소비자의 단일 요청은 여러 엔터티를 반환할 수 있습니다. 동일한 API에 대해 다른 소비자는 요구 사항에 따라 다른 임베딩 패턴을 사용할 수 있습니다.
모든 API는 JSONAPI Extras 모듈을 다운로드하고 활성화하여 달성할 수 있는 요구 사항에 따라 사용자 지정할 수 있습니다.

json API 활성화



Using Drush
$ drush en serialization -y
$ drush en jsonapi -y
$ drush dl jsonapi_extras && drush en jsonapi_extras -y

Using Drupal Console
$ drupal module:install serialization
$ drupal module:install jsonapi
$ drupal module:download jsonapi_extras && drupal module:install jsonapi_extras

구성



JSONAPI는 즉시 읽을 수 있도록 모든 Drupal 엔터티에 대한 액세스를 제공하는 제로 구성 모듈입니다.
모듈 설정 페이지(/admin/config/services/jsonapi)로 이동하여 요구 사항에 따라 변경해야 합니다.


JSON API로 리소스 검색



JSON API 사양은 모든 요청에 ​​JSON API에 대한 올바른 MIME 유형이 있는 Accept 헤더를 포함할 것을 권장합니다.
JSON API 모듈은 요청 헤더가 없는 요청을 수락합니다.

리소스 컬렉션 검색
REST 대신 JSON API를 사용하는 주요 동기는 JSON API 컬렉션을 사용하여 여러 리소스를 검색할 수 있다는 것입니다.
컬렉션 엔터티를 검색할 수 있는 Views 나머지 내보내기만 있습니다. JSON API에서 다음 URL에 대해 GET 요청을 발행하면 기사와 같은 항목 모음을 검색할 수 있습니다./jsonapi/node/article
JSON API 사양을 사용하면 특정 쿼리 매개변수를 사용하여 API를 통해 검색된 컬렉션에서 작업할 수 있습니다.
page[limlit],sort/jsonapi/node/article?sort=nid/jsonapi/node/article?page[limit]=30&page[offset]=25/jsonapi/node/article?page[limit]=30
필드의 제한된 하위 집합 검색
제목, 생성 및 수정된 타임스탬프, 엔터티 본문만 캡처하려면 필드 쿼리 매개 변수를 제공할 수 있습니다.
매개변수에는 유형과 번들도 포함되어야 합니다.
/jsonapi/node/article?fields[node--article]=title,created

JSON API로 리소스 생성



JSON API 사양을 사용하면 API를 통해 개별 리소스를 만들 수 있습니다.
다음 요청 헤더는 표준 응답을 생성하기 위해 모든 POST 요청에서 필수입니다.
Accept: application/vnd.api+jsonContent-Type: application/vnd.api+json
기사를 생성하는 POST 요청을 하려면 기사 모음을 검색하는 데 사용한 것과 동일한 URL을 사용하십시오.
/jsonapi/node/article기사를 만들 때 사용자와의 관계를 포함하여 기사를 만든 사람임을 나타낼 수 있습니다.
다음 페이로드는 엔티티를 기존 사용자에 연결하는 관계를 반영합니다({{user_uuid}}).
이 POST 요청에서 소유권이 할당된 사람.

{
  "data": {
    "type": "node--article",
    "attributes": {
      "title": "My snazzy new article",
      "body": {
        "value": "Hello world! Lorem ipsum dolor sit amet consectetur adipiscing elit",
        "format": "plain_text"
      }
    },
    "relationships": {
      "uid": {
        "data": {
          "type": "user--user",
          "id": "{{user_uuid}}"
        }
      }
    }
  }
}

이 요청은 생성된 엔터티의 JSON API 응답과 함께 201 Created 응답 코드를 생성합니다.
우편 배달부의 샘플 응답


JSON API로 리소스 업데이트



PATCH 요청에는 다음 헤더도 필요합니다.
Accept: application/vnd.api+json
Content-Type: application/vnd.api+json

우리는 PATCH를 사용하여 기사를 수정하고 해당 기사의 UUID를 찾아 해당 기사의 끝에 추가합니다.
다음과 같은 URL:/jsonapi/node/article/{{node_uuid}}
수정하려는 필드와 해당 엔터티의 UUID만 포함하는 요청 페이로드를 포함합니다.

{
  "data": {
    "type": "node--article",
    "id": "{{node_uuid}}",
    "attributes": {
      "title": "Change in article"
    }
  }
}




JSON API로 리소스 삭제


DELETE 메소드를 사용하여 생성한 기사를 삭제할 수 있습니다.
헤더 :Content-Type: application/vnd.api+json
DELETE 요청을 사용하면 페이로드가 필요하지 않습니다. UUID를 사용하여 올바른 리소스를 추가하고 해당 URL에 대해 Delete 메서드를 사용해야 합니다./jsonapi/node/article/{{node_uuid}}
204 No Content 응답 코드가 표시됩니다.



결론



웹 기반 API가 발전함에 따라 이 json 형식은 XML보다 더 나은 접근 방식입니다.
JSONAPI는 웹 서비스 API를 통해 Drupal 엔터티(사용자, 댓글 등)를 사용할 수 있게 함으로써 훌륭한 경험을 제공합니다.
URL은 HTTP 메서드를 사용하여 엔터티 유형 및 번들에 액세스하기 위한 요구 사항에 따라 조작할 수 있습니다.

좋은 웹페이지 즐겨찾기