it-swarm-vi.com

Cách xây dựng API RESTful với Joomla

Tôi đã xây dựng các tiện ích mở rộng Joomla kể từ v1 nhưng tôi cần sớm có một API trực tiếp mà tôi đã xây dựng và đã sử dụng được một thời gian. Hiện tại tôi đang sử dụng Joomla 2.5 và có các plugin viết cho hệ thống này:

https://github.com/techj Joomla/com_api

Trước khi đi vào hoạt động, tôi muốn chứng minh hệ thống càng nhiều càng tốt. Thành phần API này mới chỉ bắt đầu được nâng cấp để hoạt động với Joomla v3 nên hiện tại nó đang ngăn trang web được nâng cấp. Tôi cũng nghĩ rằng tách API công khai và cổng thông tin người dùng có ý nghĩa vì không có lợi ích gì khi nó là một tiện ích mở rộng tích hợp vì API sẽ được sử dụng bởi các ứng dụng di động.

Kế hoạch hiện tại là xây dựng lại API trên tên miền phụ cho phép chúng tôi nâng cấp cổng thông tin người dùng. Tôi đã đọc về khung công tác Joomla mới có vẻ thú vị. Điều này có phù hợp để xây dựng API RESTful cho các ứng dụng di động của chúng tôi không? Nếu vậy, họ có lời khuyên về việc bắt đầu? Tôi đã đọc rằng foF có thể được sử dụng để xây dựng API, đây có phải là một lựa chọn tốt không? Tôi thấy dự án Kickstarter có ý định xây dựng chính xác loại API này, đó có phải là một lựa chọn tiềm năng không? Tôi có nên tước lại trang web 2.5 hiện tại cho tên miền phụ để nó chỉ chạy API không?

Bất kỳ đề xuất nào về cách tiếp cận tốt nhất để xây dựng API RESTful dựa trên Joomla cho tương tác di động sẽ được đánh giá cao.

11
Joe P

Từ kinh nghiệm của tôi:

Giới thiệu về khung Joomla

Tôi đã cố gắng xây dựng một API RESTful đơn giản để xác thực tích hợp dựa trên khung Joomla. Nó khá phức tạp, khá khác so với API Joomla hiện tại. Ngoài ra, mã nguồn hiện tại không thể được sao chép và các thư viện có thể trả về kết quả không mong muốn (được thực thi trong một môi trường khác). Tôi sẽ đợi cho đến khi có nhiều mã hơn và nó được chấp nhận nhiều hơn.

Giới thiệu về khung FOF

Tôi hiện chỉ phát triển với FOF. Khá tiện dụng, rất nhiều RAD, cấu hình tự động, v.v; và mã tương thích với J2.5/J3.

Đối với API RESTful, bạn chỉ cần lấy ví dụ todo-fof và thêm bộ điều khiển với API. Thí dụ:

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();

}

Ngoài ra, bạn có thể tận dụng chế độ xem json tự động E.g. một khung nhìn duyệt (default.php) có thể tạo đầu ra json (chỉ cần thêm default_json.phpecho json_encode ...)

8
Anibal

com_api chắc chắn là một cách tốt để xây dựng REST dịch vụ cho trang web của bạn nếu bản thân tiện ích mở rộng không dựa trên FOF/RAD. Tuy nhiên, hãy cẩn thận với một vài vấn đề nếu bạn dự định tạo một cá thể Joomla riêng biệt chỉ dành cho API

  • Nội dung cụ thể của tên miền (Ví dụ: Nếu bạn đang hỗ trợ đăng ký người dùng, thì email chào mừng sẽ bao gồm một liên kết đến tên miền phụ API). Điều này có thể được giảm thiểu bằng cách chơi xung quanh với biến máy chủ PHP.
  • Đường dẫn hình ảnh tương tự, v.v ... cần phải chính xác, trừ khi bạn đang sử dụng S3

Ngoài ra, tôi chắc chắn không có bất kỳ vấn đề nào, vì điều đó sẽ tiếp tục được phát triển cho đến khi có một cách tạo API thực tế của Joomla.

Tuyên bố miễn trừ trách nhiệm: Tôi là người duy trì https://github.com/techj Joomla/com_api

6
Ashwin Date

Hai xu của tôi:

Đối với một khách hàng, tôi cần truy cập vào nội dung của trang j Joomla của anh ta từ một ứng dụng điện thoại thông minh. Nội dung được đặt trong com_content nên ban đầu tôi sử dụng nguồn cấp dữ liệu obRSS. Sau đó, tôi tìm thấy jBackend trên JED và đã thử nó. Nó có sẵn ở đây http://www.elfget.com/products/jbackend.html Mã có vẻ rất sạch sẽ và nó hỗ trợ các yêu cầu RESTful và phản hồi JSON. Tài liệu trực tuyến còn hạn chế nhưng đủ rõ ràng cho các kỹ thuật viên. Thật không may tại thời điểm này, nó chỉ hỗ trợ com_user và com_content nhưng trong trường hợp của tôi thì điều này vẫn ổn. Bây giờ tôi nên sử dụng nó cho một khách hàng khác sử dụng K2 CCK. Tôi đang cố gắng xây dựng một plugin tùy chỉnh để truy cập các bài viết và danh mục K2, nhưng ít nhất tôi sẽ lưu toàn bộ mã quản lý yêu cầu. Tôi đã gửi email cho nhà phát triển và anh ấy nói với tôi rằng anh ấy đang làm việc trên các mô-đun bổ sung như diễn đàn K2 và Kunena, đây là phần mở rộng rất hứa hẹn.

1
WizKid

Trang web sau đây dường như là một tài nguyên tuyệt vời cho các hướng dẫn về cách xây dựng API JSONful RESTful:

http://jsonapi.org/

Để biết giá trị của nó, tôi cũng đang tung ra một sản phẩm API cho Joomla 3.4.x có tên là cAPI http://getcapi.org .

Sự khác biệt chính ở đây là tôi đặt khung định tuyến của mình trên khung vi mô Slim. Điều này cho phép tôi kết hợp một khung công tác mạnh mẽ đã được thử nghiệm và thử nghiệm vào ví dụ ứng dụng Joomla. Tôi cũng đã tạo một kiến ​​trúc plugin cho các tuyến dịch vụ, mở ra cánh cửa cho các tiện ích bổ sung và bảo mật dịch vụ web.

Bạn có thể tìm thêm thông tin từ các bài viết khác, tại đây:

https://stackoverflow.com/questions/26340885/rest-api-for-j Joomla-3/32706378 # 32706378

Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi.

1
Steve Tsiopanos