整理总结thinkphp5如何使用restful

创建api目录

在这里插入图片描述

在api目录中创建控制器和配置文件

如下图:
在这里插入图片描述

api的test控制器

在这里插入图片描述

<?php

namespace app\api\controller;

use think\Controller;

class Test extends Controller
{
    
    

    public function index()
    {
    
    
        return [
            'status' => 0,
            'msg' => 'success'
        ];
    }

    //put 需要定义$id
    public function update($id = '')
    {
    
    
        $put_data = input('put.');
        $data = array(
            'id' => $id,
            'put_data' => $put_data
        );
        return $data;
    }

    //delete 需要定义$id 然后用提交的id值替换
    public function delete($id = '')
    {
    
    

        $data = array(
            'id' => $id,
        );
        return $data;
    }

    //post 需要定义$id
    public function save()
    {
    
    
        $post_data = input('post.');
        $data = array(
            'post_data' => $post_data
        );
        return $data;
    }
}

config.php中配置返回格式

<?php

return [
    //设置返回数据类型为json格式
    'default_return_type'=>'json',

];

设置路由

在thinkphpwu/application目录下有一个route.php文件

在这里插入图片描述

自动注册路由规则

在路由配置文件中使用__rest__添加资源路由定义:

return [
    // 定义资源路由
    '__rest__'=>[
        // 指向index模块的blog控制器
        'blog'=>'index/blog',
    ],
    // 定义普通路由
    'hello/:id'=>'index/hello',
]

设置后会自动注册7个路由规则

标识 请求类型 生成路由规则 对应操作方法(默认)
index GET blog index
create GET blog/create create
save POST blog save
read GET blog/:id read
edit GET blog/:id/edit edit
update PUT blog/:id update
delete DELETE blog/:id delete

具体指向的控制器由路由地址决定,例如上面的设置,会对应index模块的blog控制器,你只需要为Blog控制器创建以上对应的操作方法就可以支持下面的URL访问:

http://serverName/blog/
http://serverName/blog/128
http://serverName/blog/28/edit

Blog控制器中的对应方法如下:

namespace app\index\controller;
class Blog {
    
    
    public function index(){
    
    
    }
    
    public function read($id){
    
    
    }    
    
    public function edit($id){
    
    
    }    
}

单独设置路由

具体代码如下:

<?php
//引用think的路由底层Route类
use think\Route;

//设置路由

//get方式
Route::get('test', 'api/test/index');

//put方式
Route::put('test/:id', 'api/test/update');

//delete方式
Route::delete('test/:id', 'api/test/delete');

//post方式
//Route::post('test', 'api/test/save');

//resource方式 对应7种方式
Route::resource('test', 'api/test');

Route::resource(‘test’, ‘api/test’); 这种方式包含了post方式请求,自动查找对应的save方法

get方式请求

在这里插入图片描述
返回后台设置的内容

put方式请求

在这里插入图片描述
请求路径为http://app.thinkphpwu.com/test/888
对应的888表示id,put_data就是我们提交的数据,后台可以根据自身的业务进行修改操作

delete方式请求

在这里插入图片描述
请求的是delete方法,返回要删除的id的值

post方式请求

在这里插入图片描述

通用化API接口数据封装

在application目录中的公共函数common.php 文件 增加 show方法

/**
 * 通用化API接口数据输出
 * @param int $status 业务状态码
 * @param string $message 信息提示
 * @param [] $data  数据
 * @param int $httpCode http状态码
 * @return array
 */
function show($status, $message, $data = [], $httpCode = 200)
{
    
    

    $data = [
        'status' => $status,
        'message' => $message,
        'data' => $data,
    ];

    return json($data, $httpCode);
}

在需要返回给前端的函数中调用show方法,比如我们在test控制器的save方法中调用show,代码如下:

    public function save()
    {
    
    
        $post_data = input('post.');
        $data = array(
            'post_data' => $post_data
        );
        return show(0, '保存成功!', $data);
    }

使用postman请求,得到返回的数据如下图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/guo_qiangqiang/article/details/112105047