lumen Rest API 起步

Posted 绝技小嗨皮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lumen Rest API 起步相关的知识,希望对你有一定的参考价值。

lumen Rest API 起步

修改项目文件

.env

DB_DATABASE=<数据库名>
DB_USERNAME=<数据库用户名>
DB_PASSWORD=<数据库密码>

bootstrap/app.php

$app->withFacades();
$app->withEloquent();

数据库迁移

创建数据表

php artisan make:migration create_table_users --create=users

定义数据表
database/migrations/迁移文件

Schema::create(‘users‘, function (Blueprint $table) {
    $table->id();
    $table->string(‘name‘);
});

运行迁移

php artisan migrate

创建模型

接下来我们在app目录下创建模型文件User.php

namespace App;

use IlluminateAuthAuthenticatable;
use IlluminateContractsAuthAccessAuthorizable as AuthorizableContract;
use IlluminateContractsAuthAuthenticatable as AuthenticatableContract;
use IlluminateDatabaseEloquentModel;
use LaravelLumenAuthAuthorizable;

class User extends Model implements AuthenticatableContract, AuthorizableContract
{
    use Authenticatable, Authorizable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $table = ‘users‘;

    protected $fillable = [
        ‘id‘, ‘name‘,
    ];

    /**
     * The attributes excluded from the model‘s JSON form.
     *
     * @var array
     */
    protected $hidden = [];

    public $timestamps = false;
}

创建控制器

然后创建控制器文件app/Http/Controllers/UserController.php

namespace AppHttpControllers;

use AppUser;
use DB;
use IlluminateHttpRequest;

class UserController extends Controller
{
    public function createUser(Request $request)
    {
        $user = User::create($request->all());
        return response()->json($user);
    }

    public function updateUser(Request $request,$id)
    {
        $user = User::find($id);
        $user->name = $request->input(‘name‘);
        $user->save();

        return response()->json($user);
    }

    public function deleteUser($id)
    {
        $user = User::find($id);
        $user->delete();

        return response()->json(‘删除成功‘);
    }

    public function index($id = null)
    {
        if (!empty($id)) {
            $users = User::find($id);
        }else{
            $users = User::all();
        }
        return response()->json($users);
    }

    public function hello()
    {
        return ‘hello‘;
    }
}

定义路由

修改文件bootstrap/app.php

$app->router->group([
    ‘namespace‘ => ‘AppHttpControllers‘,
], function ($router) {
    require __DIR__.‘/../routes/web.php‘;
    require __DIR__.‘/../app/Http/routes.php‘;
});

return $app;

打开app/Http/routes.php并添加路由

$router->get(‘/hello‘, array(
    ‘uses‘ => ‘UserController@hello‘
));

$router->group([‘prefix‘ => ‘api‘], function() use ($router){
    $router->post(‘person‘, ‘UserController@createUser‘);
    $router->put(‘person/{id}‘,‘UserController@updateUser‘);
    $router->delete(‘person/{id}‘,‘UserController@deleteUser‘);
    $router->get(‘person[/{id}]‘,‘UserController@index‘);
});

测试API

curl -i -X POST -H "Content-Type:application/json" http://www.lelumen.test/api/person -d ‘{"id":2,"name":"test1"}‘
curl -i -X POST -H "Content-Type:application/json" http://www.lelumen.test/api/person -d ‘{"name":"test22"}‘

curl -H "Content-Type:application/json" http://www.lelumen.test/api/person/1 -X PUT -d ‘{"name":"ttt"}‘

curl -H "Content-Type:application/json" http://www.lelumen.test/api/person -X GET

curl -H "Content-Type:application/json" http://www.lelumen.test/api/person/1 -X GET

curl -X DELETE http://www.lelumen.test/api/person/1

空格引起的奇葩,阿哈哈

参考文件


以上是关于lumen Rest API 起步的主要内容,如果未能解决你的问题,请参考以下文章

Lumen + ReactJS 路由。分配路径

400错误代码,当使用RestTemplate进行Rest API时。

Lumen 框架中的 auth.php 应该放在哪里?

如何验证 REST Lumen/Laravel 请求中的参数?

Django REST框架--认证和权限

Laravel 和 Lumen ACL 与共享代码库