Joomla로 RESTful API를 작성하는 방법


11

v1부터 Joomla 확장 프로그램을 구축해 왔지만 곧 빌드하고 오랫동안 사용해온 API 라이브를 가져와야합니다. 현재 Joomla 2.5를 사용하고 있으며이 시스템에 플러그인을 작성했습니다.

https://github.com/techjoomla/com_api

생방송을하기 전에 가능한 한 시스템을 미래에 증명하고 싶습니다. 이 API 구성 요소는 최근 Joomla v3에서 작동하도록 업그레이드되기 시작하여 현재 사이트 업그레이드를 방해하고 있습니다. 또한 API가 모바일 앱에서 사용되므로 공용 확장과 사용자 포털을 분리하는 것이 합리적 확장이라는 이점이 없으므로 의미가 있다고 생각합니다.

현재 계획은 하위 포털에서 API를 다시 작성하여 사용자 포털을 업그레이드하는 것입니다. 흥미로운 Joomla 프레임 워크에 대해 읽었습니다. 모바일 앱을위한 RESTful API 구축에 적합합니까? 그렇다면 시작하는 데 유용한 정보입니까? FoF를 사용하여 API를 작성할 수 있다는 것을 읽었습니다. 이것이 좋은 선택입니까? Kickstarter 프로젝트가 이런 종류의 API를 정확하게 구축하려는 것을 보았습니다. 이것이 잠재적 인 옵션입니까? 하위 도메인에 대한 현재 2.5 사이트를 제거하여 API 만 실행해야합니까?

모바일 상호 작용을위한 Joomla 기반 RESTful API를 빌드하기위한 최상의 접근 방식에 대한 제안은 대단히 감사하겠습니다.


1
Joomla Extensions Directory에서이 새로운 확장 기능을 보았습니다. extensions.joomla.org/extensions/core-enhancements/libraries/…
Lodder

답변:


8

내 경험에서 :

Joomla 프레임 워크 정보

Joomla 프레임 워크를 기반으로 통합 인증을위한 간단한 RESTful API를 만들려고했습니다. 현재 Joomla API와는 상당히 다른 상당히 복잡합니다. 또한 현재 소스 코드를 복사하여 붙여 넣을 수 없으며 라이브러리가 예기치 않은 결과 (다른 환경에서 실행되고 있음)를 반환 할 수 있습니다. 더 많은 코드를 사용할 수있을 때까지 기다릴 것이며 더 많이 채택되었습니다.

FOF 프레임 워크 정보

현재 FOF로만 개발 중입니다. 많은 RAD, 자동 구성 등이 매우 편리합니다. 코드는 J2.5 / J3과 호환됩니다.

RESTful API의 경우 todo-fof-example을 잡고 API를 사용하여 컨트롤러를 추가하면됩니다. 예:

public function getIndexStatus()
{
    // CSRF prevention
    if ($this->csrfProtection)
    {
        $this->_csrfProtection();
    }

    $message['status'] = true;
    $message['error_message'] = 'Status Ok';

    $message = json_encode($message);
    echo $message;
    flush();

    JFactory::getApplication()->close();

}

또한 자동 json보기를 활용할 수 있습니다. 예를 들어 탐색보기 (default.php)는 json 출력을 생성 할 수 있습니다 (추가 default_json.phpecho json_encode...)


1
내가 이해할 때 FOF의 유일한 문제는 Joomla 코어에서 개발자가 더 이상 지원하지 않는다는 것입니다. 비록 FOF 버전이 다시 포크되어 Joomla의 일부가 아니라는 것을 이해하고 있지만?
Craig

당신 말이 맞지만, 전혀 문제가되지 않습니다. Joomla의 FOF는 꽤 안정적입니다 (아직 내 확장을 업그레이드하지 않았습니다). 새 F0F는 새 라이브러리로 설치해야합니다 (... 끝에 항상 J2.5에 설치해야하며 설치 프로그램은 J3을 준비합니다). 현재 소스 코드의 99 %가 변경되지 않았습니다.
Anibal

귀하의 제안에 감사드립니다. Joomla Framework는 매우 복잡하지만 사용 방법을 배우고 있습니다. API에 대한 프레임 워크를 사용하는 것이 매우 간단하지만 JSON의 올바른 헤더를 반환 할 수는 없습니다. 나는 그것에 대해 또 다른 질문을 시작 했다.
Joe P

6

확장 기능 자체가 FOF / RAD를 기반으로하지 않는 경우 com_api를 사용하면 사이트에 REST 서비스를 구축 할 수 있습니다. 그러나 API에 대해서만 별도의 Joomla 인스턴스를 생성하려는 경우 몇 가지 문제에주의하십시오.

  • 도메인 관련 사항 (예 : 사용자 등록을 지원하는 경우 환영 이메일에 API 하위 도메인에 대한 링크가 포함됨) 이것은 PHP 서버 변수로 놀아서 완화시킬 수 있습니다.
  • S3를 사용하지 않는 한 유사하게 이미지 경로 등이 정확해야합니다.

그 외에도 API를 작성하는 사실상 Joomla 방법이있을 때까지 계속 개발 될 것이기 때문에 문제가 없어야합니다.

면책 조항 : 나는 https://github.com/techjoomla/com_api 의 관리자입니다


답변 주셔서 감사합니다. 계속해서 개발하고 있음을 아는 것이 좋습니다. com_api의 작동 방식이 마음에 들지만 API를 제공하기 위해 전체 Joomla CMS를 실행하지 않으려 고했습니다. 프레임 워크를 필요에 따라 작동시킬 수 없다면 계속해서 사용할 것입니다.
Joe P

1

내 두 센트 :

고객의 경우 스마트 폰 앱에서 joomla 사이트의 컨텐츠에 액세스해야했습니다. 내용은 com_content에 배치되었으므로 처음에는 obRSS 피드를 사용했습니다. 그런 다음 JED에서 jBackend를 찾아서 시도했습니다. http://www.selfget.com/products/jbackend.html에 있습니다 . 코드는 매우 깨끗해 보이고 RESTful 요청 및 JSON 응답을 지원합니다. 온라인 설명서는 제한적이지만 기술자에게는 충분합니다. 불행히도 현재는 com_user 및 com_content 만 지원하지만 제 경우에는 괜찮습니다. 이제 K2 CCK를 사용하는 다른 고객에게 사용해야합니다. K2 기사 및 카테고리에 액세스하기 위해 사용자 정의 플러그인을 작성하려고하지만 적어도 전체 요청 관리 코드를 저장합니다. 나는 개발자에게 이메일을 보냈고 그는 K2 및 Kunena 포럼과 같은 추가 모듈을 연구하고 있다고 말했습니다. 매우 유망한 확장입니다.


1

다음 사이트는 RESTful JSON API를 빌드하는 방법에 대한 지침을 제공하는 훌륭한 리소스 인 것 같습니다.

http://jsonapi.org/

가치가있는 것을 위해 Joomla 3.4.x 용 API 제품인 cAPI http://getcapi.org 도 출시했습니다 .

여기서 가장 큰 차이점은 라우팅 프레임 워크를 Slim 마이크로 프레임 워크에 걸렸다는 것입니다. 이를 통해 이미 검증되고 테스트 된 강력한 프레임 워크를 Joomla 애플리케이션 인스턴스에 통합 할 수 있습니다. 또한 서비스 라우트에 대한 플러그인 아키텍처를 작성하여 추가 기능 및 웹 서비스 보안의 문을 열었습니다.

다른 게시물에서 추가 정보를 찾을 수 있습니다. 여기 :

/programming/26340885/rest-api-for-joomla-3-0/32706378#32706378

궁금한 점이 있으면 알려주세요.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.