#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-запрос.