thinkjs 簡單搭建api服務(wù)

安裝 ThinkJS 命令

$ npm install -g think-cli

安裝完成后,系統(tǒng)中會有 thinkjs 命令(可以通過 thinkjs -V 查看 think-cli 的版本號臀脏,此版本號非 thinkjs 的版本號)劝堪。如果找不到這個命令,請確認(rèn)環(huán)境變量是否正確

創(chuàng)建項(xiàng)目

執(zhí)行 thinkjs new [project_name] 來創(chuàng)建項(xiàng)目揉稚,如:

$ thinkjs new demo;
$ cd demo;
$ npm install; 
$ npm start; 

打開瀏覽器訪問 http://127.0.0.1:8360/秒啦,如果是在遠(yuǎn)程機(jī)器上創(chuàng)建的項(xiàng)目,需要把 IP 換成對應(yīng)的地址搀玖。

安裝調(diào)試工具ndb

npm install -g ndb 

首先要確保你的 Node.js 環(huán)境 >= 8.0.0余境,然后使用 npm install 就可以非常方便的完成安裝。由于 ndb 依賴 Puppeteer 安裝過程中會去下載 Chromium 所以下載過程可能會有一定的時間灌诅,請各位同學(xué)耐心等待喳坠。如果有碰上權(quán)限問題官方提示可以嘗試增加 --unsafe-perm=true --allow-root 參數(shù)解決照棋。
使用調(diào)試工具調(diào)試
在vscode命令行工具里輸入

ndb npm run

即可打開ndb調(diào)試頁面

ndb

熟悉chrome dev調(diào)試的對此不會陌生
進(jìn)入頁面后在左側(cè)菜單中找到npm scripts菜單,在次菜單下鼠標(biāo)放到start上后會出現(xiàn)開始三角按鈕,點(diǎn)擊按鈕即運(yùn)行調(diào)試模式.
可以嘗試在執(zhí)行代碼中打斷點(diǎn),和chrome dev效果一致.
同時可以修改代碼,保存即可同步代碼.

開始添加業(yè)務(wù)邏輯

我們要做一個logger上報和查詢的api

  1. 連接mysql
    src->config->adapter.js 文件下修改代碼,連接sql字符串
/**
 * model adapter config
 * @type {Object}
 */
exports.model = {
  type: 'mysql',
  common: {
    logConnect: isDev,
    logSql: isDev,
    logger: msg => think.logger.info(msg)
  },
  mysql: {
    handle: mysql,
    database: 'thinkjsplus',
    prefix: '',
    encoding: 'utf8',
    host: '127.0.0.1',
    port: '3306',
    user: 'root',
    password: 'root',
    dateStrings: true
  }
};
  1. 在mysql中新建database 名為thinkjsplus
    創(chuàng)建table,并寫入初始數(shù)據(jù)
-- ----------------------------
-- Table structure for `thinkjsplus_logger`
-- ----------------------------
DROP TABLE IF EXISTS `thinkjsplus_logger`;
-- auto-generated definition
create table thinkjsplus_logger
(
  id   int auto_increment,
  user varchar(100) null
  comment '用戶信息',
  port varchar(200) null
  comment '端口信息',
  info varchar(500) null
  comment 'log 信息',
  time datetime     not null
  comment '上報時間',
  constraint thinkjsplus_logger_id_uindex
  unique (id)
)
  comment 'web error logger';

alter table thinkjsplus_logger
  add primary key (id);


-- ----------------------------
-- Records of thinkjsplus_logger
-- ----------------------------
INSERT INTO `thinkjsplus_logger` VALUES ('admin', 'localhost','test');
INSERT INTO `thinkjsplus_logger` VALUES ('user1', 'www.example','test');

創(chuàng)建 Controller

使用命令

thinkjs controller logger

之后再src/controller文件夾下會生成logger.js文件,我們的邏輯就寫在這里面

const Base = require('./base.js');
const moment = require('moment');//引用了moment庫,需要安裝npm install --save moment

module.exports = class extends Base {
  async listAction() {
    if (this.isPost) {
      let data = await this.model('thinkjsplus_logger').select();
      return this.success(data);
    } else {
      return this.json(null);
    }
  }

  async addAction() {
    let data = this.post();
    data.time = moment(new Date()).format('YYYY-MM-DD HH:mm:ss');
    if (think.isEmpty(data.id)) {
     
      let res=null;
      try {
         //保存
        res = await this.model('thinkjsplus_logger').add(data).catch(err => {
          return think.isError(err) ? err : new Error(err);
        });
      } catch (e) {
        return this.fail(1000, e);
      }

      if (think.isError(res)) {
        return this.fail(1000, res.message);
      }
      if (res) {
        this.success(true);
      } else {
        this.success(true);
      }
    } else {
      //更新
      let res = await this.model('thinkjsplus_logger').update(data);
      if (res) {
        this.success(true);
      } else {
        this.success(true);
      }
    }
  }
};

請求測試

  1. 使用postman發(fā)送添加請求
// url server為全局變量 http://localhost:8360/
{{server}}logger/add
//body json
{
    "user":"wwmin",
    "port":"localhost",
    "info":"test"
}

在ndb的listAction中打斷點(diǎn)進(jìn)行調(diào)試,一切順利就會看到返回結(jié)果為true

  1. 使用postman發(fā)送查詢請求
// url server為全局變量 http://localhost:8360/
{{server}}logger/list

請求方式為post,但是沒有參數(shù)
在ndb的listAction中打斷點(diǎn)進(jìn)行調(diào)試,一切順利就會看到返回結(jié)果為 list 對象.
說明接口調(diào)試完成.

終于將thinkjs跑通了接口api,為以后的搭建后臺api鋪平了道路,當(dāng)然里面還有許多沒考慮到的地方,比如 權(quán)限驗(yàn)證,service服務(wù),model,middleware,logic,extend等方面都沒有涉及,在這之后會進(jìn)一步研究,并將此文繼續(xù)補(bǔ)充完整.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胧卤,一起剝皮案震驚了整個濱河市羔飞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挎袜,老刑警劉巖顽聂,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肥惭,死亡現(xiàn)場離奇詭異,居然都是意外死亡芜飘,警方通過查閱死者的電腦和手機(jī)务豺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗦明,“玉大人,你說我怎么就攤上這事蚪燕∪⑴疲” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵馆纳,是天一觀的道長诗良。 經(jīng)常有香客問我,道長鲁驶,這世上最難降的妖魔是什么鉴裹? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮钥弯,結(jié)果婚禮上径荔,老公的妹妹穿的比我還像新娘。我一直安慰自己脆霎,他們只是感情好总处,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著睛蛛,像睡著了一般鹦马。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忆肾,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天荸频,我揣著相機(jī)與錄音,去河邊找鬼客冈。 笑死旭从,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的郊酒。 我是一名探鬼主播遇绞,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼燎窘!你這毒婦竟也來了摹闽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤褐健,失蹤者是張志新(化名)和其女友劉穎付鹿,沒想到半個月后澜汤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舵匾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年俊抵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坐梯。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡徽诲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吵血,到底是詐尸還是另有隱情谎替,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布蹋辅,位于F島的核電站钱贯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侦另。R本人自食惡果不足惜秩命,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望褒傅。 院中可真熱鬧弃锐,春花似錦、人聲如沸樊卓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碌尔。三九已至浇辜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間唾戚,已是汗流浹背柳洋。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叹坦,地道東北人熊镣。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像募书,于是被迫代替她去往敵國和親绪囱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理莹捡,服務(wù)發(fā)現(xiàn)鬼吵,斷路器,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 分享?xiàng)畋娀I這段關(guān)于眾籌創(chuàng)業(yè)的金句琉挖,非常認(rèn)同。以下: 眾籌沒有緊急又重要的事情:創(chuàng)業(yè)怕什么涣脚,怕有緊急又重要的事情示辈,所...
    阿渡SZ閱讀 138評論 0 0
  • 本次活動地點(diǎn)船底頂露營,共三個家庭參與遣蚀,林家大小四口矾麻,黃家大小四口,梁家大小四樓妙同。男士負(fù)重40~45斤射富,女士負(fù)重2...
    藍(lán)色的月光被人用了閱讀 1,944評論 0 1
  • 早上醒來,沖入腦門的一句話粥帚,任何事情要準(zhǔn)備二個解決方案。想起上個星期做ISO流程圖限次,抱著完成任務(wù)的態(tài)度做芒涡,結(jié)果審計(jì)...
    jjjessica08閱讀 77評論 0 0
  • 接《金剛經(jīng)》系列前四篇文章: (1)武則天修持金剛經(jīng)到什么境界羊始?《金剛經(jīng)》解讀一 (2)菩提心到底是什么旱幼?《金剛經(jīng)...
    百家載閱讀 1,278評論 0 1