参考自:https://www.toptal.com/laravel/restful-laravel-api-tutorial
1、修改.env配置文件里数据库的相关信息
DB_CONNECTION=mysql
DB_HOST=
192.168.xx.xx
DB_PORT=3306
DB_DATABASE=
xxx
DB_USERNAME=
xxxx
DB_PASSWORD=
xxxx
2、进入新建项目的目标文件夹
composer install : 安装相关依赖
php artisan migrate : 根据migration里的文件生成数据库里的表
php artisan db:seed : 自动填充数据
php artisan serve :启动服务器
指定启动服务器的主机和端口号
$ php artisan serve
--host=0.0.0.0 --port=8080
3、具体实例
1)新建类
php artisan make:model Article -m
在目标文件夹运行上述命令之后,会自动在app目录下生成Article.php(在文件里写明该类对应的数据库字段名)、
在database/migrations下面生成CreateArticlesTable的类文件(在文件里写明要生成的数据库表的字段名和字段类型,
可以指定是否允许为空,默认值为多少,标明注释)
例如:
$table->integer('weight') 字段名 ->comment('权重') 中文注释 ->nullable() 允许为空 ->default(0); 默认值为0
2)数据库自动生成表
php artisan migrate
该命令会根据database/migrations里的文件内容自动生成数据库表
3)自动生成seeds
php artisan make:seeder ArticlesTableSeeder
该命令会在database/seeds下生成seeder文件,在seeder文件里指定模拟数据的类型和长短
4)自动填充数据
php artisan db:seed --class=ArticlesTableSeeder
执行上述命令可以根据seeder文件自动向数据库里插入模拟数据
如果将新生成的seeder文件添加到DatabaseSeeder 的run()方法中,
如
$this->call(UsersTableSeeder::class);
则只需要执行php artisan db:seed 即可一次性生成DatabaseSeeder里
指定的seeder文件里的模拟数据。如果此方法生成失败,
则需要指定要自动生成数据的seeder:
php artisan db:seed --class=ArticlesTableSeeder
5)新建Controller
php artisan make:controller ArticleController
在controller里面写基本的增删改查方法,如果有复杂的方法则新建
service层,再在controller里进行引用。
该命令会在app/HTTP/Controllers下生成controller文件
例如:
查list:
public function index()
{
return Article::all();
}
查单条记录:
public function show($id)
{
return Article::find($id);
}
新增单条数据:
public function store(Request $request)
{
return Article::create($request->all());
}
修改单条数据:
public function update(Request $request, $id)
{
$article = Article::findOrFail($id);
$article->update($request->all());
return $article;
}
删除单条数据
public function delete(Request $request, $id)
{
$article = Article::findOrFail($id);
$article->delete();
return 204;
}
6)添加路由
在routes/api.php里加入
Route::get('articles', 'ArticleController@index');
Route::get('articles/{id}', 'ArticleController@show');
Route::post('articles', 'ArticleController@store');
Route::put('articles/{id}', 'ArticleController@update');
Route::delete('articles/{id}', 'ArticleController@delete');