2013-12-10 23 views
5

Tôi đã cài đặt Trình phục hồi trên máy chủ cục bộ của mình để kiểm tra và tạo một số API cho dự án của tôi.Trình khôi phục luôn trả về 404: Không tìm thấy

Yêu cầu api được xử lý qua http://localhost/myproject/api/.

Vấn đề là mỗi lần tôi cố gắng để thực hiện một yêu cầu tôi nhận được lỗi sau:

{ 
    "error": { 
     "code": 404, 
     "message": "Not Found" 
    }, 
    "debug": { 
     "source": "Routes.php:383 at route stage", 
     "stages": { 
      "success": [ 
       "get" 
      ], 
      "failure": [ 
       "route", 
       "negotiate", 
       "message" 
      ] 
     } 
    } 
} 

Ngoài ra đây là của tôi .htaccess:

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^api(.*)$ /myproject/api/api.php [QSA,L] 

Và đây là những gì api.php trông giống như:

namespace myproject; 

use Luracast\Restler\Restler; 

require_once($_SERVER["DOCUMENT_ROOT"]."/myproject/resources/engine/settings.php"); 
require_once(Settings\Path\Absolute::$library."/restler/vendor/restler.php"); 

$restler = new Restler(); 
$restler->addAPIClass("myproject\\User"); 
$restler->handle(); 

Tôi đoán có một số cấu hình sai tion xung quanh, nhưng tôi thực sự không thể tìm ra những gì sai.

(Tôi cũng đã cố gắng một số giải pháp về Stackoverflow nhưng họ dường như không làm việc cho tôi)

Edit:

tôi đã cố gắng đạt dụ bằng cách sử dụng đường dẫn sau http://localhost/myproject/resources/engine/library/restler/public/examples và họ đang làm việc , vì vậy tôi đoán nó đã làm với cấu hình của Restler chính nó bởi vì nó không có vẻ làm việc trong http://localhost/myproject/api.

Hơn nữa, tôi cũng đã thử sao chép Trình thám hiểm Restler trong http://localhost/myproject/api/explorer và tôi tiếp tục nhận được lỗi: 404 : Not Found ../resources.json có thể vì tôi không cài đặt Trình khôi phục trong thư mục gốc của dự án. Làm thế nào tôi phải cài đặt Restler trong một thư mục con khác?

Chỉnh sửa 2: Tôi vừa chuyển lớp sau vào ví dụ 001 thư mục:

class User { 

    function data() { 

     return "HELLO!"; 
    } 
} 

và thêm dòng này bên trong index.php của ví dụ:

$r->addAPIClass('User'); 

Nếu tôi cố gắng để chạy ví dụ tại .../_001_helloworld/index.php/say/hello nó hoạt động mà không có vấn đề nhưng nếu tôi thử _001_helloworld/index.php/user/data nó không phải là.

Tại thời điểm này tôi đã mất tất cả hy vọng và tôi thực sự cần sự giúp đỡ vì thực sự tôi đang thiếu một cái gì đó nhưng thực sự không thể đoán những gì :(HELP!

Trả lời

2

Đây là cách bạn có thể gỡ lỗi và tìm whats sai,

  • Tháo namespace trong api.php. Nó không phải là cần thiết và sẽ gây ra vấn đề.

  • Sao chép thư mục để thám hiểm /myproject/api thư mục và thêm Tài cla ss như một lớp api

    $restler->addApiClass('Resources'); //this produces the needed resources.json 
    
  • Nếu bạn đang thêm lớp người dùng với một namespace, chắc chắn rằng nó được định nghĩa dưới namespace đó và làm sẵn có với bạn bao gồm tuyên bố hoặc autoloader.

  • Bạn có thể tạo thư mục /myproject/api/cache và làm cho nó có thể ghi. Khi bạn nhanh chóng restler trong phương thức sản xuất với việc làm mới bộ nhớ cache như hình dưới đây, nó sẽ tạo ra routes.php trong thư mục bộ nhớ cache trong đó liệt kê tất cả các thông tin tuyến đường

    $restler = new Restler(true,true); //production_mode, refresh 
    

Hy vọng bạn tìm thấy whats sai với trên

+0

Tôi đã làm theo 2 bước đầu tiên và giải quyết được vấn đề. Cảm ơn bạn, tôi thực sự đánh giá cao sự giúp đỡ của bạn :) – siannone

+0

Tôi đang gặp vấn đề tương tự. Đó là tất cả các hoạt động ngày hôm qua, sau đó tôi bắt đầu nhận được thông điệp 404 từ Restler. Không có cấu hình máy chủ web nào của tôi thay đổi. Đi qua index.php hoạt động, và đi theo cách đó hoặc không có index.php tạo tệp routes.php giống hệt nhau trong cả hai trường hợp. –

+0

Vui lòng bỏ qua nhận xét của tôi; Tôi đã sử dụng URL sai .. Doh –

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