美文网首页PHP开发PHP经验分享
【框架七】Coder PHP Framework 完整的api

【框架七】Coder PHP Framework 完整的api

作者: KunkkaWu | 来源:发表于2020-07-17 10:05 被阅读0次

    完整的API: 这里以用户的增删改查为例子。包含:路由、控制器、服务、数据模型、错误码、抛出异常等功能。主要是:帮助新同学熟悉 API服务的开发流程和规范。

    Coder PHP Framework.png

    配置参数

    .env文件中配置Mysql数据库的参数

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=coder
    DB_USERNAME=coder
    DB_PASSWORD=123456
    

    创建数据库 coder

    create database `coder` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    

    这里我们默认字符集为utf8mb4,改字符集支持emoji类的表情符号。

    创建user表

    CREATE TABLE `user` (
       `uid` int(11) NOT NULL AUTO_INCREMENT,
       `username` varchar(24) DEFAULT NULL,
       `password` varchar(64) DEFAULT NULL,
       `enabled` enum('1','0') DEFAULT '1',
       `create_time` datetime DEFAULT NULL,
       PRIMARY KEY (`id`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    

    至此,数据库部分准备完成。

    添加路由

    在routes\web.php中添加路由

    Route::get('/user/list', 'UserController@index   //获取列表
    Route::get('/user/info', 'UserController@info');  //获取详情
    Route::post('/user/create', 'UserController@create');  //添加用户
    Route::post('/user/update', 'UserController@update');  //更新用户
    Route::post('/user/delete', 'UserController@delete'); //删除用户
    
    

    添加控制器

    在app\Http\Controllers下添加UserController.php

    写入如下代码:

    <?php
    
    namespace App\Http\Controllers;  //声明Controller命名空间
    
    use App\Exceptions\ServiceException;
    use App\Libs\MessageCode;
    use App\Services\UserService;
    use System\Request;
    use System\Response;
    use System\Validator;
    
    class UserController extends Controller {
        //获取列表
        public function index(Request $request){
            try {
                $data = UserService::getList();
                return Response::json($data);
            } catch (ServiceException $e){
                return Response::error($e);
            }
        }
    
        //获取详情
        public function info(Request $request){
            try {
                $params = $request->all();
                $validate = Validator::make($params, [  //参数验证,具体规则参考 Validator类
                    'uid' => 'required',
                ]);
                if($validate->fails()){
                    throw new ServiceException(MessageCode::ILLEGAL_PARAMETERS);
                }
                $data = UserService::getInfo($params);  //调用服务
                return Response::json($data);  //Response 类按照Json格式输出
            } catch (ServiceException $e){  //捕获异常
                return Response::error($e);
            }
        }
    
        public function create(Request $request){
            try {
                $params = $request->all();
                $validate = Validator::make($params, [
                    'username' => 'required|min:4',
                    'password' => 'required|between:6,20'
                ]);
                if($validate->fails()){
                    throw new ServiceException(MessageCode::ILLEGAL_PARAMETERS);
                }
    
                $result = UserService::create($params);
                return Response::json($result);
            } catch (ServiceException $e){
                return Response::error($e);
            }
        }
    
        public function update(Request $request){
            try {
                $params = $request->all();
                $validate = Validator::make($params, [
                    'uid' => 'required',
                ]);
                if($validate->fails()){
                    throw new ServiceException(MessageCode::ILLEGAL_PARAMETERS);
                }
    
                $result = UserService::update($params);
                return Response::json($result);
            } catch (ServiceException $e){
                return Response::error($e);
            }
        }
    
        public function delete(Request $request){
            try {
                $params = $request->all();
                $validate = Validator::make($params, [
                    'uid' => 'required',
                ]);
                if($validate->fails()){
                    throw new ServiceException(MessageCode::ILLEGAL_PARAMETERS);
                }
    
                $result = UserService::delete($params);
                return Response::json($result);
            } catch (ServiceException $e){
                return Response::error($e);
            }
        }
    
    }
    

    添加Service

    在app\Services下添加UserService.php文件,写入如下内容:

    <?php
    namespace App\Services;  //声明Service命名空间
    
    use App\Exceptions\ServiceException;
    use App\Libs\MessageCode;
    use App\Models\UserModel;
    
    class UserService{
    
        public static function getList(){
            return UserModel::getInstance()->getList();
        }
    
        public static function getInfo($data){
            if(empty($data['uid'])){
                throw new ServiceException(MessageCode::PARAMETERS_ERROR);
            }
            return UserModel::getInstance()->getInfo($data['uid']);
        }
    
        public static function create($data){
            if(empty($data['username']) || empty($data['password'])){
                throw new ServiceException(MessageCode::PARAMETERS_ERROR); //抛出异常
            }
    
            $insertData = [
                'username' => $data['username'],
                'password' => md5($data['password'])
            ];
    
            return UserModel::getInstance()->create($insertData); //调用Model
        }
    
        public static function update($data){
            if(empty($data['uid'])){
                throw new ServiceException(MessageCode::PARAMETERS_ERROR);
            }
            $updateData = [];
    
            if(!empty($data['username'])){
                $updateData['username'] = $data['username'];
            }
    
            if(!empty($data['password'])){
                $updateData['password'] = md5($data['password']);
            }
    
            return UserModel::getInstance()->update($updateData, $data['uid']);
        }
    
        public static function delete($data){
            if(empty($data['uid'])){
                throw new ServiceException(MessageCode::PARAMETERS_ERROR);
            }
            return UserModel::getInstance()->delete($data['uid']);
        }
    
    }
    
    

    添加Model

    在app\Models下添加UserModel.php,写入如下内容:

    <?php
    
    namespace App\Models;  //声明Model的命名空间
    
    use System\DB;
    
    class UserModel extends DB  {
    
        protected $table = 'user';
        private static $_instance;
        protected $_pk = 'uid';
    
        public static function getInstance() {
            if (!self::$_instance) {
                self::$_instance = new self();
            }
            return self::$_instance;
        }
    }
    

    至此,一个简单的完整的API就编写完成了。

    下载

    官网下载:

    http://getcoder.cn/download

    Github下载:

    https://github.com/wk331100/coder_php_framework

    文档中心

    http://docs.getcoder.cn/

    相关文章

      网友评论

        本文标题:【框架七】Coder PHP Framework 完整的api

        本文链接:https://www.haomeiwen.com/subject/pywwhktx.html