phprs

高效轻便的 RESTful 框架
授权协议 GPL
开发语言 PHP
所属分类 Web应用开发、 REST/RESTful项目
软件类型 开源软件
地区 国产
投 递 者 公羊招
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

先举个栗子

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

/**
 * @path("/hw")
 */
class HelloWorld
{
    /** 
     * @route({"GET","/"})
     */
    public function doSomething() {
        return "Hello World!";
    }
}

浏览器输入http://your-domain/hw/ 你将看到:Hello World!就是这么简单,不需要额外配置,不需要继承也不需要组合。
发生了什么

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

再看个更具体的例子

这是一个登录接口

/**
 * 用户权限验证
 * @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;
}

还能做什么

依赖管理(依赖注入),
自动输出接口文档(不是doxgen式的类、方法文档,而是描述http接口的文档)
接口缓存
hook

担心可用性?

此框架目前支持线上亿级PV。

  • 软件简介 这是一个轻量级框架,专为快速开发RESTful接口而设计。如果你和我一样,厌倦了使用传统的MVC框架编写微服务或者前后端分离的API接口,受不了为了一个简单接口而做的很多多余的coding(和CTRL-C/CTRL-V),那么,你肯定会喜欢这个框架! 先举个栗子 写个HelloWorld.php,放到框架指定的目录下(默认是和index.php同级的apis/目录) /** * @pat

  • phprs 这是一个轻量级框架,专为快速开发RESTful接口而设计。如果你和我一样,厌倦了使用传统的MVC框架编写微服务或者前后端分离的API接口,受不了为了一个简单接口而做的很多多余的coding(和CTRL-C/CTRL-V),那么,你肯定会喜欢这个框架! 先举个栗子 写个HelloWorld.php,放到框架指定的目录下(默认是和index.php同级的apis/目录) /** * @pa

  • `<?php header("Content-Type:text/html;charset=utf-8"); use phprs\ezsql\Sql; /** * @path("/wwwwwww") / class HelloWorld2 { /* @route({"GET","/"}) @param({"arg0","$._GET.arg0"}) */ public function doSom

 相关资料
  • 本文向大家介绍简单介绍Python的轻便web框架Bottle,包括了简单介绍Python的轻便web框架Bottle的使用技巧和注意事项,需要的朋友参考一下 基本映射 映射使用在根据不同URLs请求来产生相对应的返回内容.Bottle使用route() 修饰器来实现映射. 运行这个程序,访问http://localhost:8080/hello将会在浏览器里看到 "Hello World!".

  • 此图表显示了我们的Java应用程序在4天内的堆利用率(OU欧盟S1U S2U)。每次下降都是一个Young GC事件。正如您可以注意到的,堆使用率有一个增加的模式。完整的GC在运行6天后发生(图表中未显示)。它将堆使用率降低到正常水平,但暂停时间为2分钟,它会导致应用程序下降许多事务。 我们的JRE是8,我们使用并行GC。堆参数如下所示: 我试图了解什么调整是可能的,使年轻GC更有效,以便它删除所

  • 我的一般想法是,取两个多面体的每一个面,求出它的平面方程(通过应用多面体的方位和平移分量),然后越过另一个多面体的每一个顶点,确定它们是否都在平面的同一侧,如果是,我确定这两个物体不相交。 至于碰撞检测部分,我将检测它们是否相交,如果相交,我将二分搜索它们接触的那一刻,并尝试在那一刻通过找到另一个物体的顶点来找到碰撞的顶点,该顶点最接近我先前找到的平面,以确定接触点。 我的问题是,这个算法是否正确

  • 问题内容: 我有一个熊猫数据框。看起来像这样: 但有100行和100列。 我想展平它,使其看起来像这样: 最有效的方法是什么? 谢谢, 插口 问题答案: 选项1 无法100%确定效率,但最简单的方法是使用 。 选项2 另一个简单的选项 - 要么,

  • 本文向大家介绍详解Android 教你打造高效的图片加载框架,包括了详解Android 教你打造高效的图片加载框架的使用技巧和注意事项,需要的朋友参考一下 1、概述 优秀的图片加载框架不要太多,什么UIL , Volley ,Picasso,Imageloader等等。但是作为一名合格的程序猿,必须懂其中的实现原理,于是乎,今天我就带大家一起来设计一个加载网络、本地的图片框架。有人可能会说,自己写

  • 问题内容: 是否有一个提供发布/订阅模式的Java轻量级框架? 一些理想的功能 支持泛型 向发布者注册多个订阅者 API主要是接口和一些有用的实现 完全不需要内存,持久性和事务保证。 我了解JMS,但这对我来说太过分了。发布/订阅的数据是文件系统扫描的结果,扫描结果被馈送到另一个组件进行处理,然后在将其馈给另一个组件之前进行处理,依此类推。 编辑:所有在同一过程中。bean的PropertyCha