我正在尝试为现有数据库构建一个rest API。有人建议我使用Chris Kacerguis的Rest API,但他的最新版本出现了一些不断的错误。然后,我决定使用仍然有效但存在"不支持的协议"错误的先前版本。我从他的基本 GET 示例中复制粘贴了代码,但仍然有相同的不受支持的协议错误。
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use chriskacerguisRestServerRestController;
class Api extends RestController {
function __construct()
{
// Construct the parent class
parent::__construct();
}
public function users_get()
{
// Users from a data store e.g. database
$users = [
['id' => 0, 'name' => 'John', 'email' => 'john@example.com'],
['id' => 1, 'name' => 'Jim', 'email' => 'jim@example.com'],
];
$id = $this->get( 'id' );
if ( $id === null )
{
// Check if the users data store contains users
if ( $users )
{
// Set the response and exit
$this->response( $users, 200 );
}
else
{
// Set the response and exit
$this->response( [
'status' => false,
'message' => 'No users were found'
], 404 );
}
}
else
{
if ( array_key_exists( $id, $users ) )
{
$this->response( $users[$id], 200 );
}
else
{
$this->response( [
'status' => false,
'message' => 'No such user found'
], 404 );
}
}
}
}
https://github.com/chriskacerguis/codeigniter-restserver
在 REST 配置文件中选中此选项
$config['force_https'] = TRUE;
我遇到此问题是因为我的站点位于负载均衡器后面,并且请求以 http 格式从负载均衡器进入 API:(端口 80(
解决方案是关闭force_https,因此:
$config['force_https'] = FALSE;