如何使用PHP编写RESTful接口

php中文网
发布: 2016-06-20 12:37:02
原创
1123人浏览过

phprs @github

这是一个轻量级框架,专为快速开发restful接口而设计。如果你和我一样,厌倦了使用传统的mvc框架编写微服务或者前后端分离的api接口,受不了为了一个简单接口而做的很多多余的coding(和ctrl-c/ctrl-v),那么,你肯定会喜欢这个框架!

先举个栗子

  1. 写个HelloWorld.php,放到框架指定的目录下(默认是和index.php同级的apis/目录)

    /** * @path("/hw") */class HelloWorld{    /**      * @route({"GET","/"})     */    public function doSomething() {        return "Hello World!";    }}
    登录后复制
  2. 浏览器输入 http://your-domain/hw/

    你将看到: Hello World!就是这么简单,不需要额外配置,不需要继承也不需要组合。

发生了什么

回过头看HelloWorld.php,特殊的地方在于注释(@path,@route),没错,框架 通过注释获取路由信息和绑定输入输出。但不要担心性能,注释只会在类文件修改后解析一次。更多的@注释后面会说明。

AI图像编辑器
AI图像编辑器

使用文本提示编辑、变换和增强照片

AI图像编辑器 46
查看详情 AI图像编辑器

立即学习PHP免费学习笔记(深入)”;

再看个更具体的例子

这是一个登录接口的例子

/** * 用户权限验证 * @path("/tokens/")  */class Tokens{     /**     * 登录     * 通过用户名密码授权     * @route({"POST","/accounts/"})      * @param({"account", "$._POST.account"}) 账号     * @param({"password", "$._POST.password"}) 密码     *      * @throws ({"InvalidPassword", "res", "403 Forbidden", {"error":"InvalidPassword"} }) 用户名或密码无效     *      * @return({"body"})         * 返回token,同cookie中的token相同,     * {"token":"xxx", "uid" = "xxx"}     *     * @return({"cookie","token","$token","+365 days","/"})  通过cookie返回token     * @return({"cookie","uid","$uid","+365 days","/"})  通过cookie返回uid     */    public function createTokenByAccounts($account, $password, &$token,&$uid){        //验证用户        $uid = $this->users->verifyPassword($account, $password);        Verify::isTrue($uid, new InvalidPassword($account));        $token = ...;        return ['token'=>$token, 'uid'=>$uid];    }     /**     * @property({"default":"@Users"})   依赖的属性,由框架注入     * @var Users     */    public $users;}
登录后复制

还能做什么

  1. 依赖管理(依赖注入),

  2. 自动输出接口文档(不是doxgen式的类、方法文档,而是描述http接口的文档)

  3. 接口缓存

  4. hook

配合 ezsql访问数据库

ezsql是一款简单的面向对象的sql构建工具,提供简单的基本sql操作。接口

/** @path(/myclass) */class MyClass{   /**    * @route({"GET","/do"})    * @param({"arg0","$._GET.arg0"})    */   public doSomething($arg0){        return Sql::select('xxx')->from('table_xxx')->where( 'xxx = ?', $arg0)->get($this->db);   }    /**     * 依赖注入PDO实例     * @property     * @var PDO     */    public $db;}
登录后复制

配置文件

{    {        "MyClass":{            "properties":{                "db":"@db1"                 }        },    },    "db1":{        "singleton":true,        "class":"PDO",        "pass_by_construct":true,        "properties":{            "dsn":"mysql:host=127.0.0.1;dbname=xxx",            "username":"xxxx",            "passwd":"xxxx"                   }    },}
登录后复制

手册

请移步 github

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号