[Laravel]Laravel从零到面向增删改查API工程师(RestFul Style)
[Laravel]Laravel从零到增删改查工程师(restful)准备工作详见我的这篇文章起始,本篇文章便不再讲解创建项目等事宜使用PHP Laravel框架编写restful风格API1. 数据库为student,数据表stu,数据为上2. 修改项目数据库配置打开根目录下的 .env 文件进行数据库配置DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3
·
[Laravel]Laravel从零到增删改查工程师(restful)
- 准备工作详见我的这篇文章起始,本篇文章便不讲解创建项目等事宜
使用PHP Laravel框架编写restful风格API
又是一年开工季 先祝大家新年快乐
目录
- 配置项目
- 编写代码
- 代码解析
- postman接口测试
一. 配置
1. 数据库为student,数据表stu,数据为上
2. 修改项目数据库配置
打开根目录下的 .env 文件进行数据库配置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=mysql用户名
DB_PASSWORD=mysql密码
3. 创建stu模型
php artisan make:model api/stu
4. 创建stu控制器
php artisan make:controller stuController --api
5. 打开stu.php模型进行编写
class stu extends Model
{
protected $table = "stu";
protected $primaryKey = "id";
public $timestamps = false;
protected $fillable = [];
protected $guarded = [];
}
$table
数据表名$primaryKey
主键名 如果是id可以忽略$timestamps
是否使用$timestamps
属性,值是false
,如果不设置为false
,则默认会操作表中的create_at
和updated_at
字段,我们表中一般没有这个字段,所以设置为false
,表示不要操作这两个字段$fillable
允许入库字段$guarded
不允许入库字段
6. 打开项目/routes/api.php
配置路由
添加代码如下
Route::apiResource("stu","stuController");
apiResource
可以添加RestFul风格的五个API增删改 + 两查
路径 | 方法 | 方式 | 通常作用 |
---|---|---|---|
/stu | index | GET | 获取所有数据 |
/stu | store | POST | 增加数据 |
/stu/1 | show | GET | 查看单条数据(id为1) |
/stu/1 | update | PUT | 修改数据(id为1) |
/stu/1 | destroy | DELETE | 删除数据(id为1) |
----------------------------------------------
二、编写代码
stuController.php
use App\api\stu;
- 需要先引入stu模型
编写各个API方法
<?php
namespace App\Http\Controllers;
use App\api\stu;
use Illuminate\Http\Request;
class stuController extends Controller
{
/**
* 显示所有
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$data = stu::get();
return response($data);
}
/**
* 插入
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$data = $request->all();
$res = stu::insert(array("name" => $data["name"], "age" => $data["age"], "sex" => $data["sex"]));
if ($res > 0) {
return "插入成功";
} else {
return "插入失败";
}
}
/**
* 显示指定
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$data = stu::where("id",$id)->get();
return response($data);
}
/**
* 修改
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$data = $request->all();
$updateData = array();
foreach ($data as $key => $item) {
$updateData[$key] = $item;
}
$res = stu::where("id", $id)->update($updateData);
if ($res > 0) {
return "插入成功";
} else {
return "插入失败";
}
}
/**
* 删除
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$res = stu::where("id", $id)->delete();
if ($res > 0) {
return "删除成功";
} else {
return "删除失败";
}
}
}
三、解析
index方法 对应的访问路径是public/api/stu
GET方法 无参数
- 作用:显示所有数据
public function index()
{
$data = stu::get();
return response($data);
}
store方法 对应的访问路径是public/api/stu
POST方法 参数为对象
- 作用:插入数据
- 参数:
{name:“xxx”,age:28,sex:“女”}
public function store(Request $request)
{
//
$data = $request->all();
$res = stu::insert(array("name" => $data["name"], "age" => $data["age"], "sex" => $data["sex"]));
if ($res > 0) {
return "插入成功";
} else {
return "插入失败";
}
}
- 如果
$res
,也就是影响行数大于零行,那么判定成功,反之失败
show方法 对应的访问路径是public/api/stu/{id}
GET方法 参数为id
- 作用:用于显示数据库中指定的一行数据
- 参数:
public/api/stu/{id}
public function show($id)
{
$data = stu::where("id",$id)->get();
return response($data);
}
- 使用where方法查找指定id的字段返回
update方法 对应的访问路径是public/api/stu/{id}
PUT方法 参数为id和对象
- 作用:修改指定行数据
- 参数:
public/api/stu/{id}
和
{name:"xxx",age:28,sex:"女"}
其中任意键值对
public function update(Request $request, $id)
{
$data = $request->all();
$updateData = array();
foreach ($data as $key => $item) {
$updateData[$key] = $item;
}
$res = stu::where("id", $id)->update($updateData);
if ($res > 0) {
return "插入成功";
} else {
return "插入失败";
}
}
- 因为不确定要修改哪一项,需要
foreach
方法将不定长度的参数转换为sql的update方法需要的键值对,格式为"name"=>$data["name"]
destroy方法 对应的访问路径是public/api/stu/{id}
DELETE方法 参数为id
- 作用:删除指定行数据
- 参数:
public/api/stu/{id}
public function destroy($id)
{
$res = stu::where("id", $id)->delete();
if ($res > 0) {
return "删除成功";
} else {
return "删除失败";
}
}
- 如果
$res
,也就是影响行数大于零行,那么判定删除成功,反之失败
四、测试
index方法
store方法 插入
show方法 展示
update方法 修改
destory方法 删除
原创创作不易 点赞收藏支持 谢谢
更多推荐
已为社区贡献2条内容
所有评论(0)