codecamp

CF web的初始化与使用

介绍

当您构建好自己的cf开发环境或基于作者提供的[dockerfile](https://github.com/CandyMi/core_framework/wiki/Docker)构建好容器后并且将指定目录挂在到```/app/script```目录后, 就可以开始根据此篇文档进行service构建了。 本文假设您已经比较了解cf框架目录结构并且参考过基本的API与cf介绍.

快速开始

默认情况下, cf框架会在当前文件夹下寻找```script/main.lua```文件当做入口文件. 运行用户指需要完成的初始化与框架初始化后. 则开始进入事件循环等待请求.

使用者可根据httpd库的使用方法, 开始初始化```main.lua```. 以下是一个简单示例, 为使用者注册了一个'/api'路由提供测试

    local httpd = require "httpd"
    local app = httpd:new("App")


    app:api('/api', function(content)
        return '{"code":200}'
    end)


    app:listen(nil, 8080)
    app:run()

API与USE区别

API注册的路由Content-Type为```Application/json```, USE注册的路由类型为```text/html```.

如果批量注册API/USE路由?

路由处理方法分为2种: 一种是上述的回调处理函数,  一种是使用```class```库创建的http对象. 一般来说, 使用class对象结构化更清晰

在项目使用之初, 可能并不需要进行模块化. 所有文件写入到一个文件内即可, 这样方便快速开发与调试.


但是当项目需求逐渐增多, 与前端同学对接API/前后端分离的后台API的数量直线上升. 这样, 我们的批量路由注册才能提现出模块化对项目的重要性.

第一步, 使用者需要编写批量注册的路由表(以API路由为例):

   --- 首先我们在script文件夹内新建一个文件夹admin;
   --- 然后新建一个admin/init.lua的文件, 这个文件内容如下:
   return {
    {route = '/r1', class = require "admin.r1"},
    {route = '/r2', class = require "admin.r2"},
    {route = '/r3', class = require "admin.r3"},
   }

然后在```scrit/main.lua```文件内添加批量注册路由, 需要指名路由类型、路由前缀、路由表的文件:

  app:group(app.API, '/admin', require 'admin')
最后, 我们需要在```script/admin``` 开始创建在真正的路由表对应的处理函数:

  --- r1.lua
    local class = require "class"


    local r1 = class("r1")


    function r1:ctor(content)

    
    end


    function r1:get()
        return 'this request build-in '..self.__name
    end
    return r1


  --- r2.lua
    local class = require "class"


    local r2 = class("r2")


    function r2:ctor(content)

    
    end


    function r2:get()
        return 'this request build-in '..self.__name
    end
    return r2


  --- r3.lua
    local class = require "class"


    local r3 = class("r3")


    function r3:ctor(content)

    
    end


    function r3:get()
        return 'this request build-in '..self.__name
    end
    return r3
测试一下: ```curl localhost:8080/admin/r1```.

最后

上述所有代码可以在```script```文件夹内找到.
CF如何运行?
CF web Websocket应用指南
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

API 使用手册

HTTP API

Mail API

DB API

DB

Cache API

class API

MQ API

MQ

Crypt API

cf API

cf

System API

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }