小编Ale*_*nov的帖子

Web API设计技巧

我目前正在开发一个非常简单的Web服务,并认为我可以为此编写API,所以当我决定在新平台上扩展它时,我只需要编译解析器应用程序.也就是说,API不适合其他开发人员,但我不会限制访问它,所以任何人都可以在此基础上构建.

然后我想我甚至可以通过这个API运行网站本身,原因有很多,比如带宽消耗较低(浏览器生成的HTML)和客户端缓存.作为AJAX的重量似乎是一个更大的理由.

布局如下所示:

Server (database, programming logic)
|
API (handles user reads/writes)
|
Client application (the website, browser extensions, desktop app, mobile apps)
|
Client cache (further reduces server reads)
Run Code Online (Sandbox Code Playgroud)

介绍之后我的问题是:

  1. 这是API的良好用途
  2. 通过API运行整个网站是一个好主意
  3. 使用API​​时我有哪些安全身份验证选择(出于某种原因我不想使用HTTPS)

编辑

其他问题:

  1. 我没有考虑过任何其他方法
  2. 使用这种方法可能产生的一些潜在问题我没有考虑到

api api-design multiplatform

9
推荐指数
1
解决办法
3354
查看次数

关于PHP类的一些(高级)问题

我有几个关于PHP类的问题,但不能单独询问,所以我在这里:

我有一个我正在构建的CMS,其核心是我的baseClass,logger,DB和模块类.DB和logger是静态类,因此我可以在其他对象中使用它们.有很多模块类加载到baseClass中:

class baseClass {
    private $_modules;

    public function __construct() {
        logger::log("instance created.");
         $this->_modules = Array()
    }

    public function __destruct() {
        foreach($this->_modules as $name) $this->unloadModule($name);
        logger::log("instance destroyed.");
    }

    public function loadModule($name) {
        if (class_exists($name)) {
            if (!isset($this->$name)) {
                $this->_modules[] = $name;
                $this->$name = new $name();
                logger::log("module '$name' loaded.");
            }
            else logger::log("module '$name' already loaded.", 2);
        }
        else logger::log("module '$name' does not exist.", 3);
    }

    public function unloadModule($name) {
        if (isset($this->$name)) {
            unset($this->$name);
            foreach($this->_modules as $id => $mod_name) {
                if ($name==$mod_name) …
Run Code Online (Sandbox Code Playgroud)

php class

7
推荐指数
1
解决办法
363
查看次数

标签 统计

api ×1

api-design ×1

class ×1

multiplatform ×1

php ×1