[Laravel]Laravel从零到面向增删改查API工程师(RestFul Style)

[Laravel]Laravel从零到增删改查工程师(restful)

又是一年开工季 先祝大家新年快乐

目录

  1. 配置项目
  2. 编写代码
  3. 代码解析
  4. 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_atupdated_at字段,我们表中一般没有这个字段,所以设置为false,表示不要操作这两个字段
  • $fillable 允许入库字段
  • $guarded 不允许入库字段

6. 打开项目/routes/api.php配置路由

添加代码如下

Route::apiResource("stu","stuController");
  • apiResource 可以添加RestFul风格的五个API 增删改 + 两查
    在这里插入图片描述
路径方法方式通常作用
/stuindexGET获取所有数据
/stustorePOST增加数据
/stu/1showGET查看单条数据(id为1)
/stu/1updatePUT修改数据(id为1)
/stu/1destroyDELETE删除数据(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方法 删除

在这里插入图片描述
在这里插入图片描述

原创创作不易 点赞收藏支持 谢谢

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值