jowy/phalcon-restful-webservice

Phalcon RESTful Webservice

dev-master 2015-07-30 06:59 UTC

This package is not auto-updated.

Last update: 2024-09-24 15:36:05 UTC


README

这只是另一个Phalcon RESTful webservice。它使用Phalcon注释路由进行高级和灵活的路由配置。

路由与选项

所有路由都必须放在 app/controllers 目录下,并且类名必须以 Controller 后缀结尾。如果你的控制器名为 Example,则类名为 ExampleController。你可以限制最大请求到特定的API密钥或方法。限制API密钥的最大请求可以在类注释中设置,这将限制API密钥访问类中的所有方法。此外,如果你想限制特定的方法,可以在方法注释中设置,这将限制所有API密钥访问此方法。

类注释选项

@RoutePrefix("your-prefix-url-here") - 必需

@Api(level=1-10, limits={"key": {"increment": "-1 month", "limit": 1000}}) - 可选

方法注释选项

@Get("/") - 必需

@Post("/") - 必需

@Put("/) - 必需

@Delete("/") - 必需

@Auth("your-auth-driver") - 可选

@Limit({"increment": "-1 hour", "limit": 50}) - 可选

完整示例

use Phalcon\Mvc\Controller;

/**
 * @RoutePrefix("/v1/example")
 * @Api(level=1,
 *  limits={
 *   "key" : {
 *       "increment" : "-1 day", "limit" : 1000}
 *   }
 *  )
 */
class ExampleController extends Controller
{
	/**
     * @Get("/")
     * @Limit({"increment": "-1 hour", "limit": 50});
     * @Auth("basic")
     * @Whitelist()
     */
    public function getAction()
    {
        // Your Logic here
    }

	/**
     * @Post("/")
     * @Limit({"increment": "-1 hour", "limit": 50});
     * @Auth("basic")
     */
    public function addAction()
    {
        // Your Logic here
    }
}

认证

通过添加认证,您可以添加额外的安全层。认证只能通过添加注释来启用每个类方法。

基本认证

当用户请求webservice时,此选项启用HTTP基本认证。

响应

响应由 ellipsesynergie/api-response 处理,您可以通过phalcon DI使用 apiResponse 访问此库。

用法

	/**
     * @Get("/")
     * @Limit({"increment": "1 hour", "limit": 50});
     * @Auth("basic")
     */
    public function getAction()
    {
        $this->apiResponse->withArray(
			[
				"name" => "Jowy"
			],
			[
				"My-Custom-Response-Header" => "It rocks"
			]
		);
    }

迁移

php vendor/bin/phinx migrate

测试

php vendor/bin/codecept run

待办事项

  1. 改进文档
  2. 添加基于IP的白名单/黑名单(已实现)
  3. 添加基于IP的限制
  4. 添加用于监控webservice的仪表板