Codeigniter 3 Restserver всегда выполняет get-запрос

#php #codeigniter #rest #http #codeigniter-restserver

#php #codeigniter #rest #http #codeigniter-restserver

Вопрос:

Я использую Codeigniter 3.1.0, Restserver, загруженный отсюда, с документацией отсюда. Я также использую расширение Chrome Postman.

Проблема в том, что даже если я выбираю POST из выпадающего меню Postman, он попадает в метод get… Ниже приведен код:

 defined('BASEPATH') OR exit('No direct script access allowed');
require APPPATH . '/libraries/REST_Controller.php';

class Example extends REST_Controller {
    function __construct() {
        parent::__construct();
    }
    public function users_get() {
        echo "get request";
    }
    public function users_post() {
        echo "post request";
    }
}
  

Теперь через Postman, если я выберу ПОЛУЧИТЬ URL example-domain.com/api/example/users предварительный просмотр — это запрос get

Если я выберу POST на тот же URL example-domain.com/api/example/users предварительный просмотр снова является запросом get, а не запросом post

Я ничего не менял в config/rest.php и я использую реализованный пример Restserver в controllers / api /example

Кто-нибудь знает, почему я не могу использовать метод POST?

Комментарии:

1. странно, что он должен автоматически перенаправлять к определенному обработчику post

2. точно… и это не первый раз, когда я использую CI Restserver… это совершенно странно…

3. попробуйте выполнить чистую установку codeigniter и интегрировать библиотеку

4. это чистая установка

5. включите отладку в конфигурации, затем попытайтесь выяснить, в чем проблема

Ответ №1:

Наконец-то я нашел причину проблемы. Ранее я установил SSL в этом домене, но пытался вызвать API с помощью HTTP.

В .htaccess у меня был rewriterule

RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

для принудительного использования HTTPS.

Если я делаю POST-запрос с HTTPS, это работает как шарм.

Если я делаю POST-запрос с HTTP, он перенаправляется на HTTPS (из-за правила перезаписи), поэтому на новую страницу отправляется новый GET-запрос.