【问题标题】:Turn entire database into RESTful API将整个数据库转换为 RESTful API
【发布时间】:2016-12-16 23:46:22
【问题描述】:

我正在尝试在我的 Laravel APP 中将 MySQL 数据库转换为 RESTful API。我在 github 中遇到了这个package

我已经尝试过了,并按照每条说明进行操作,以下是我的设置:

$args = array(
            'name' => 'cacti',
            'username' => 'username',
            'password' => '****',
            'server' => 'localhost',
            'port' => 3306,
            'type' => 'mysql',
            'table_blacklist' => array(),
            'column_blacklist' => array()
);

register_db_api( 'dataset-name', $args );

这就是我在register_db() 中的内容:

function register_db( $name = 'cacti', $args = array() ) {

        $defaults = array(
            'name' => 'cacti',
            'username' => 'username',
            'password' => '****',
            'server' => 'localhost',
            'port' => 3306,
            'type' => 'mysql',
            'table_blacklist' => array(),
            'column_blacklist' => array(),
            'ttl' => $this->ttl
        );

        $args = shortcode_atts( $defaults, $args );
        $name = $this->slugify( $name );

        $this->dbs[$name] = (object) $args;

    }

我不断得到:

必须选择一个数据库

我检查了我的数据库设置三次,并为 MySQL Workbench 使用了相同的设置,我可以登录并查看我的数据库。

我错过了什么?

我愿意接受任何可以帮助我将数据库转变为 RESTful API 的新建议。

【问题讨论】:

  • 你有一个名为dataset-name的数据库吗?
  • 不,我没有。我的数据库名称是 cacti。我应该把它改成那样吗?
  • 我看到两个函数 register_db_api 和 register_db ,我认为这意味着看起来函数!

标签: php mysql database rest laravel


【解决方案1】:

我终于在 Laravel 中自己完成了。

#1 - 路线

Route::get('api/psql/{table_name}', 'ApiController@psql');

#2 - 控制器

 public function psql($table_name){
    $object = DB::table($table_name)->get();
    return $object;
}


#3 - 叫它

http://localhost:8888/api/psql/users

结果

[
{
"id": 2005,
"account_id": "2005",
"email": "test@b",
"fb_email": "",
"tw_email": "",
"created_at": "2016-08-09 11:19:30",
"updated_at": "2016-08-09 11:19:30",
"fb_access_token": "",
"fb_profile_id": "",
"fb_page_id": "",
"fb_username": "",
"auto_provisioning": null,
"service_plan": null
},
{
"id": 2004,
"account_id": "2004",
"email": "test@outlook.com2",
"fb_email": "",
"tw_email": "",
"created_at": "2016-08-08 11:39:50",
"updated_at": "2016-08-09 14:02:55",
"fb_access_token": "",
"fb_profile_id": "",
"fb_page_id": "",
"fb_username": "",
"auto_provisioning": "1",
"service_plan": "Blast"
}
]

【讨论】:

    【解决方案2】:

    使用您的示例时:

    $args = array(
                'name' => 'cacti',
                'username' => 'username',
                'password' => '****',
                'server' => 'localhost',
                'port' => 3306,
                'type' => 'mysql',
                'table_blacklist' => array(),
                'column_blacklist' => array()
    );
    
    register_db_api( 'dataset-name', $args );
    

    您必须使用网址:

    /dataset-name/table-name
    

    dataset-name 不必像其他人所说的那样与实际的数据库名称匹配。这个名字其实就是数据集的名字,可以随便取。

    旁注;请不要使用这个包,因为它的代码很糟糕,而且似乎没有自动化测试。

    【讨论】:

    • 啊……好吧。我现在明白了。感谢您对此给予更多关注! :D
    • 嗯...你有一个不介意分享的最喜欢的包吗?
    • @ihue 为什么会有这样的包?您的 API 不太可能只接收数据并将其按原样保存到数据库中。
    • 我需要能够通过某种 HTTP 从数据库中查询数据。我不知道该怎么做,我会这样做。
    • 我写了一个小的script 可以为你完成这项工作。
    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2019-07-20
    • 2021-12-28
    • 1970-01-01
    • 2019-08-31
    相关资源
    最近更新 更多