2012-12-17 34 views
5

Tôi đã được đọc bài báo:yêu cầu REST định tuyến không có khung công tác?

http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

để học cách xây dựng một API nghỉ ngơi. Tại một thời điểm, nó nói "Giả sử bạn đã chuyển yêu cầu của bạn đến bộ điều khiển chính xác cho người dùng"

Tôi đã cố gắng tìm một hướng dẫn hoặc một cái gì đó cho thấy cách thực hiện điều này, nhưng mọi thứ tôi đã đọc đều đề xuất một khuôn khổ. Làm thế nào tôi có thể làm điều này mà không có một khuôn khổ?

EDIT:

Tôi đang viết API REST mà tôi có thể tương tác từ một ứng dụng khác. Tôi đã sẵn sàng hướng dẫn ở trên, và nó có ý nghĩa chủ yếu, nhưng tôi không chính xác hiểu những gì nó có nghĩa là để lộ trình yêu cầu của tôi đến bộ điều khiển chính xác cho người dùng.

+0

Nếu bạn muốn thực hiện PHP MVC, không sử dụng khung công tác đã tồn tại có lẽ không được khuyến khích. Nếu bạn khăng khăng tự mình làm, thì bạn cần xác định chính xác những gì bạn đang cố gắng làm, như ngay bây giờ, điều này không thể trả lời ở dạng hiện tại của nó. Bạn đang hỏi làm thế nào để viết một cái gì đó chấp nhận một yêu cầu HTTP ... một khung MVC mới thực sự ..? – thatidiotguy

Trả lời

3

Giả sử bạn đang sử dụng Apache, bạn có thể thực hiện việc này dễ dàng bằng cách sử dụng kết hợp mod_rewrite và một số logic dựa trên PHP. Ví dụ, trong định nghĩa vhost .htaccess hoặc của bạn, bạn có thể định tuyến tất cả các yêu cầu thông qua một handler duy nhất, có thể index.php:

# Don't rewrite requests for e.g. assets 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*+)$ index.php?q=$1 [L] 

... sau đó trong file index.php của bạn làm như sau:

$target = $_REQUEST['q']; 
/* parse the request and include the appropriate controller PHP */ 

Ví dụ: yêu cầu cho /products/1234 có thể dẫn đến việc xử lý controllers/products.php được bao gồm. Người xử lý đó có thể hành động trên sản phẩm 1234. Vì bạn đang sử dụng REST, bạn không cần phải quan tâm đến yêu cầu ban đầu có tham số chuỗi truy vấn.

Có nhiều cách để thực hiện những gì nó có vẻ như bạn đang cố gắng làm, đây chỉ là một trong số họ. Cuối cùng những gì bạn đi với sẽ phụ thuộc vào những gì yêu cầu cụ thể của bạn ra lệnh. Các mô hình trên là khá phổ biến tuy nhiên, nhiều khuôn khổ sử dụng nó hoặc một cái gì đó như nó.

Chúc mừng

+0

Tôi sẽ cung cấp cho một thử này .. không có nhiều kinh nghiệm với chỉnh sửa .htaccess nhưng tôi sẽ cố gắng để đọc lên trên nó –

+0

Tuyệt vời. Nếu bạn cảm thấy tôi đã trả lời câu hỏi của bạn, hãy xem xét chấp nhận câu hỏi đó. http://stackoverflow.com/faq#howtoask – Madbreaks

+0

Sẽ làm, tôi thường đợi cho đến khi tôi tìm ra vấn đề –

0

Tôi nghĩ đây là vấn đề về thuật ngữ. Mỗi mã với một mức độ khái quát hóa có thể được gọi là "khuôn khổ". Và vì bạn đang hỏi về "định tuyến", cung cấp mức độ khái quát hóa bắt đầu, mọi triển khai sẽ trở thành một khuôn khổ.

Nếu bạn không muốn sử dụng các khung công tác chính thức hiện có, bạn có thể xây dựng triển khai trọng lượng nhẹ của riêng bạn. Dưới đây là một số điều để bắt đầu:

  • Write your own PHP MVC framework
  • PHP MVC framework in one hour (tác giả đã quyết định xóa bài đăng này vì anh ta nghĩ rằng việc sử dụng một khuôn khổ đầy đủ chính thức hiện đại là cách thích hợp hơn của chương trình những việc như vậy, tuy nhiên một số mọi người tìm thấy sự chấp thuận đơn giản và bị loại bỏ phù hợp hơn trong nhiều khía cạnh: học tập, hiệu quả, không phụ thuộc lớn, vv); bài viết có sẵn trên một số trang web khác, ví dụ, trong wayback machine hoặc copies
  • The Model View Controller in PHP

Tất cả những phần giới thiệu bao gồm giải thích về các cơ chế, định tuyến và chứng minh thực hiện.

Về cơ bản, bộ định tuyến là một loại nội bộ "DNS" (theo nghĩa bóng) bên trong ứng dụng của bạn. Khi một yêu cầu đến trang web của bạn, bạn cần gửi nó đến lớp công nhân thích hợp, theo các đặc tính yêu cầu đó. Đây là nhiệm vụ của router.

+0

Tôi tin rằng câu hỏi của op là khá cụ thể: làm thế nào để tuyến đường yêu cầu đến một bộ điều khiển thích hợp ... * không * làm thế nào để thực hiện một khuôn khổ MVC. – Madbreaks

+0

Tất cả tài liệu về MVC tự tạo mô tả khía cạnh định tuyến rất tốt. – Stan

+0

Liên kết thứ hai đã chết – Goose

Các vấn đề liên quan