Xây dựng API REST tùy chỉnh


10

Tôi có một trang web WordPress.org lấy đầu vào của người dùng, tìm kiếm cơ sở dữ liệu tùy chỉnh và hiển thị kết quả của truy vấn. Tôi có công việc này bằng cách sử dụng lớp wpdb . Bây giờ tôi đang cố gắng để làm việc này cho một ứng dụng Android.

Theo những gì tôi hiểu, xây dựng một máy chủ RESTful là 'cách thực hành tốt nhất' hiện tại cho loại điều này. Tôi đã xem xét một số plugin có thể giúp tôi làm điều này và tôi đã tìm thấy:

  1. json-rest-api - Dường như với tôi rằng điều này chỉ làm lộ ra chức năng cốt lõi của WordPress (ví dụ: bài đăng, trang, người dùng, v.v.) và tôi không thể xem làm thế nào để thực hiện điều này để thực hiện các truy vấn tùy chỉnh trên các bảng không mặc định.

  2. Bài đăng trên blog này nói rằng wp mvc thực hiện chính xác những gì tôi muốn, ngoại trừ nó đã không được cập nhật trong hơn 2 năm, vì vậy đó là quy tắc loại ra.

  3. Ngoài ra còn có Jetpack nhưng từ những gì tôi đã thấy, json-rest-api là phiên bản cập nhật của điều này và dường như nó cũng chỉ cung cấp chức năng cốt lõi.

Có cách nào để làm cho bất kỳ plugin nào trong số này hoạt động cho các điểm cuối tùy chỉnh không? Hoặc có những plugin khác tôi chưa tìm thấy?

Nếu tôi không sử dụng plugin, tôi nghĩ rằng tôi sẽ phải tự lăn. Tôi có thể làm điều này một trong hai từ đầu (sử dụng wpdb, msqlihoặc một cái gì đó), hoặc với sự giúp đỡ của một API như Restler .

Nếu tôi tự cuộn, tôi có nên tạo mẫu trong chủ đề của mình không, có thực hiện công cụ REST trong đó và gán chủ đề đó cho một trang trong bảng điều khiển không? Hoặc sẽ tốt hơn nếu có một máy chủ khác chạy riêng cho WordPress cho việc này?

Theo như tôi có thể thấy, đây là những lựa chọn duy nhất của tôi. Tôi muốn biết các thực hành tốt nhất được đề nghị cho loại điều này là gì. Tôi thấy khó tin rằng không ai khác đã làm điều này. Có bất kỳ lựa chọn tôi đã bỏ qua?


Rốt cuộc bạn đã đi với cái gì? Tôi đang cố gắng tạo các tuyến / điểm cuối tùy chỉnh cho api wp rest và 1) tài liệu rất tệ 2) không có ví dụ nào trên web. Hãy cho tôi biết bạn đã đi con đường nào!
Jacksonkr

1
Tôi đã quyết định xây dựng API của riêng mình bên ngoài Wordpress, nhưng nó có quyền truy cập vào cùng một cơ sở dữ liệu. Tôi chưa bao giờ thực sự xoay quanh nó, vì đây chỉ là một dự án phụ và tôi đã quá bận rộn với những thứ khác: P. Nếu tôi là bạn, tôi sẽ có một cái nhìn vào khung symfony2 hoặc laravel . Họ thực sự nhanh chóng và dễ dàng để có được một cái gì đó và chạy.
Yep_It's_Me

Câu trả lời:


15

TL; DR

Có, WordPress chắc chắn có thể hoạt động như một phụ trợ cho một ứng dụng di động. Có, một trang có thể hoạt động như một điểm cuối / giao diện nghỉ ngơi. Không, một mẫu chủ đề không phải là lãnh thổ phù hợp cho logic. Viết plugin của riêng bạn.


Con trỏ

Tôi thấy khó tin rằng không ai khác đã làm điều này.

Tôi, cho một, có. Nhiều hơn một lần. Và tôi gần như chắc chắn tôi không cô đơn. "Không ai đã viết nhiều về nó" có lẽ là quan niệm đúng đắn hơn.

Nếu tôi không sử dụng plugin, tôi nghĩ rằng tôi sẽ phải tự lăn. Tôi có thể làm điều này từ đầu (sử dụng wpdb, msqli hoặc một cái gì đó) hoặc với sự trợ giúp của API như Restler .

Tôi không biết "Restler" và dù sao thì nó cũng nằm ngoài phạm vi của stack này.
Theo như "sử dụng wpdb, msqli hoặc một cái gì đó" có liên quan: Bạn chắc chắn sẽ sử dụng wpdbđể lưu (nhận) dữ liệu vào cơ sở dữ liệu, nhưng nó không phù hợp với logic điểm cuối.

Một mẫu chủ đề không phải là những gì bạn nên xem xét. Chủ đề có nghĩa là để trình bày trực quan. Một điểm cuối REST hoàn toàn không cần sự xuất hiện trực quan.

Chèn điểm cuối vào trang bạn muốn sử dụng thông qua mã ngắn .

Yêu cầu trình xử lý / gọi lại shortcode lắng nghe HTTP POST hoặc GET và gọi lưu dữ liệu hoặc các phương thức phụ khác tương ứng.


Liệu nó có ý nghĩa để sử dụng WordPress như một điểm cuối / phụ trợ?

Nó phụ thuộc.
Nếu tất cả những gì bạn cần là một điểm cuối để lưu dữ liệu: Không. Tải toàn bộ lõi chỉ để lưu một vài dòng mã bằng cách sử dụng wpdblà không đáng.
Nếu bạn cần một phụ trợ có thể đăng nhập thông qua trình duyệt web, có thể hiển thị dữ liệu dạng bảng, cung cấp các cách để thay đổi dữ liệu đã nói, thậm chí có thể có nhiều cấp độ truy cập / vai trò và quyền của người dùng, thì có, điều đó có ý nghĩa.


3
Câu trả lời thực sự tốt +1.
gmazzap

2
Nhân đôi điều đó. +1
kaiser

Cảm ơn câu trả lời thực sự tuyệt vời! Vì vậy, từ đó, hai tùy chọn tôi có là: 1. viết plugin của riêng tôi; 2. viết một dịch vụ riêng biệt. Vì tất cả những gì tôi cần là điểm cuối cần làm là lấy một vài tham số GET và trả về phần thân JSON, tôi nghĩ rằng tôi nên viết dịch vụ của riêng mình vì "Tải toàn bộ lõi chỉ để lưu một vài dòng mã sử dụng wpdblà không đáng".
Yep_It's_Me

0

Plugin API Endpoint sẽ đáp ứng tất cả các nhu cầu của bạn, đặc biệt nếu bạn đã quen thuộc với MySQL. Bạn sẽ làm các bước sau:

  1. Tạo Mẫu Twig mới, nhập truy vấn MysQL của bạn để tìm nạp dữ liệu từ trang web WordPress của bạn và sử dụng cú pháp Twig để xuất dữ liệu ở bất kỳ định dạng nào. Ví dụ: JSON.

  2. Tạo điểm cuối API mới, đặt tên và định cấu hình để sử dụng Mẫu Twig mà bạn đã tạo ở bước 1.

Sau khi hoàn thành, lặp lại bước 1 và 2 cho mọi điểm cuối bạn muốn tạo. Điểm cuối API sử dụng hệ thống xác thực WordPress tiêu chuẩn, vì vậy tốt nhất là tạo một người dùng riêng trong WordPress của bạn và sử dụng tên người dùng / mật khẩu của nó để truy cập vào điểm cuối api của bạn.


Điểm cuối API có vẻ thú vị đối với một dự án của tôi nhưng nó yêu cầu Twig Bất cứ điều gì gần như không thể có được vì nó yêu cầu đăng nhập vào blog của bạn không cho phép đăng ký công khai.
mettjus

Bây giờ tôi nhận ra nó không miễn phí ...
mettjus

0

Phiên bản mới của WP REST API là bản Beta, nhưng có tài liệu khá hay về cách đăng ký điểm cuối REST tùy chỉnh. Ngoài ra còn có một lời giới thiệu rất nhỏ về cách nó có thể được thực hiện trong phiên bản 1, mà tôi sẽ thử vì bản beta không được đảm bảo là ổn định hoặc ổn định. Tôi giả sử bạn có thể sử dụng wpdb từ trong các phương thức bạn đăng ký. Tôi thực sự chỉ sử dụng công cụ ACF và sắp xếp lại nó vào các đối tượng trong php của mình để tạo một trang chỉ mục đa thuộc tính đẹp, có thể tìm kiếm / sắp xếp với angularJS.

So sánh giữa WWP REST API 1 và 2 từ tài liệu của họ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.