CF web的初始化與使用

2019-04-02 11:28 更新

介紹

當(dāng)您構(gòu)建好自己的cf開發(fā)環(huán)境或基于作者提供的[dockerfile](https://github.com/CandyMi/core_framework/wiki/Docker)構(gòu)建好容器后并且將指定目錄掛在到```/app/script```目錄后, 就可以開始根據(jù)此篇文檔進(jìn)行service構(gòu)建了。 本文假設(shè)您已經(jīng)比較了解cf框架目錄結(jié)構(gòu)并且參考過基本的API與cf介紹.

快速開始

默認(rèn)情況下, cf框架會(huì)在當(dāng)前文件夾下尋找```script/main.lua```文件當(dāng)做入口文件. 運(yùn)行用戶指需要完成的初始化與框架初始化后. 則開始進(jìn)入事件循環(huán)等待請(qǐng)求.

使用者可根據(jù)httpd庫的使用方法, 開始初始化```main.lua```. 以下是一個(gè)簡(jiǎn)單示例, 為使用者注冊(cè)了一個(gè)'/api'路由提供測(cè)試

    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區(qū)別

API注冊(cè)的路由Content-Type為```Application/json```, USE注冊(cè)的路由類型為```text/html```.

如果批量注冊(cè)API/USE路由?

路由處理方法分為2種: 一種是上述的回調(diào)處理函數(shù),  一種是使用```class```庫創(chuàng)建的http對(duì)象. 一般來說, 使用class對(duì)象結(jié)構(gòu)化更清晰

在項(xiàng)目使用之初, 可能并不需要進(jìn)行模塊化. 所有文件寫入到一個(gè)文件內(nèi)即可, 這樣方便快速開發(fā)與調(diào)試.


但是當(dāng)項(xiàng)目需求逐漸增多, 與前端同學(xué)對(duì)接API/前后端分離的后臺(tái)API的數(shù)量直線上升. 這樣, 我們的批量路由注冊(cè)才能提現(xiàn)出模塊化對(duì)項(xiàng)目的重要性.

第一步, 使用者需要編寫批量注冊(cè)的路由表(以API路由為例):

   --- 首先我們?cè)趕cript文件夾內(nèi)新建一個(gè)文件夾admin;
   --- 然后新建一個(gè)admin/init.lua的文件, 這個(gè)文件內(nèi)容如下:
   return {
    {route = '/r1', class = require "admin.r1"},
    {route = '/r2', class = require "admin.r2"},
    {route = '/r3', class = require "admin.r3"},
   }

然后在```scrit/main.lua```文件內(nèi)添加批量注冊(cè)路由, 需要指名路由類型、路由前綴、路由表的文件:

  app:group(app.API, '/admin', require 'admin')
最后, 我們需要在```script/admin``` 開始創(chuàng)建在真正的路由表對(duì)應(yīng)的處理函數(shù):

  --- 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
測(cè)試一下: ```curl localhost:8080/admin/r1```.

最后

上述所有代碼可以在```script```文件夾內(nèi)找到.
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)