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 Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Database\Eloquent\Model;
use Laravel\Lumen\Auth\Authorizable;

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 App\Http\Controllers;

use App\User;
use DB;
use Illuminate\Http\Request;

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' => 'App\Http\Controllers',
], 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

空格引起的奇葩,阿哈哈

参考文件

posted @ 2020-07-22 23:54  绝技小嗨皮  阅读(251)  评论(0编辑  收藏  举报
Title