Node 服務(wù)端接口 & 爬蟲

本來想用 Node 寫爬蟲和服務(wù)端接口的, 不過感覺 cheerio 的 CSS selector 用起來特別不爽, 而 Python 的 Scrapy 庫, 寫爬蟲特別好用, 遂用 Python 寫了 V2EX 的爬蟲 V2EX_Crawler

Node 爬蟲不錯(cuò)的教程
Scraping the Web With Node.js
Simple web scraping with Node.js / JavaScript
MongoDB For Beginners: Introduction And Installation (Part 1/3)

Api

  1. 由于完全沒有接觸過服務(wù)端, 學(xué)起來還是一臉懵逼的... 找了一門稍微熟悉一點(diǎn)的語言 JS, 來寫服務(wù)端
    吐槽下前端這兩年一直在搞事情, 弄出來不少幺蛾子... 學(xué)的我屁股都大了...

    • Vue, React
    • ES6
    • Webpack
  2. 當(dāng)年整過的一些 SQL 各種 join 查詢忘得也差不多了..
    遂折騰下 NOSql - MongoDB, 聽說了一段時(shí)間了, 但始終沒有嘗試過

  3. 學(xué)習(xí)寫接口主要是下面 2 個(gè)教程, 先看了第一個(gè).. 對(duì)服務(wù)端涉及的知識(shí)點(diǎn)有個(gè)大概了解, 然后通讀并寫了寫第二本書的代碼, 第二本書很棒棒哦, 非常全面, 深度對(duì)我這 Node 新手來說也剛好, 感謝作者把它開源 ~

    • 學(xué)起來倒也沒有坎, 路由之前做 iOS 的模塊化時(shí)接觸過 JLRoutes, 所以看 express 的 router 很熟悉
    • MongoDB 對(duì)新手也很友好, 上手很快, 文檔式的存儲(chǔ)結(jié)構(gòu)寫小項(xiàng)目很方便, 用起來和 ORM 差不多, 666

極力推薦的教程
《Node.js 包教不包會(huì)》 by alsotang
Practical Node.js, 1st and 2nd Editions [Apress]

RESTFul

我寫的 Api 比較簡單, 就是查數(shù)據(jù)庫, 吐 JSON, 每接觸到分布式, 多線程, Session, 各種緩存啥的

接口是 RESTFul 風(fēng)格的.. 這個(gè)是一個(gè)很成熟的規(guī)范了.. 以為能找到一個(gè)好用的框架, 直接結(jié)合 mongoose 幫我實(shí)現(xiàn)默認(rèn)的 RESTFul 接口呢, 不過沒找到合適的, 但手寫也非常簡單...

GraphQL

  1. 無聊用 Charles 抓了下 手機(jī)版的 Lynda, 一個(gè)類似網(wǎng)易云課堂的在線課程網(wǎng)站, 發(fā)現(xiàn)他的各種接口請(qǐng)求賊奇怪, 傳了很多像數(shù)據(jù)庫字段的東西
  2. 后來想到, 之前看過 Github v4 API 出了新格式之類的東西, 看了半天沒懂, 一查果然是這個(gè)東西
  3. GraphQL 國外已經(jīng)在用了, 我還沒寫過 Demo, 不過大概了解了一下思路

例子 : 比如微信用戶數(shù)據(jù)庫, 存儲(chǔ)用戶的各種詳細(xì)信息

  1. 接口 1 : 加好友, 要用戶的基本數(shù)據(jù), 名字, 頭像, 性別等
  2. 接口 2 : 用戶點(diǎn)擊好友, 查看好友全部詳細(xì)資料, 年齡, 地區(qū), 相冊(cè)等,
  • 這就需要服務(wù)端提供 2 個(gè)接口, 接口1 返回用戶的部分字段, 接口2 返回用戶的全部字段

GraphQL 實(shí)現(xiàn) : 相當(dāng)于客戶端傳過來一個(gè) SQL 語句, 告訴我查哪個(gè)表, 要哪些字段

  • 這么一來, 服務(wù)端不管處理什么都一個(gè)接口足夠了, 客戶端告訴我要哪些數(shù)據(jù), 我去執(zhí)行查詢就行了, (當(dāng)然這里肯定有校驗(yàn), SQL 防注入之類的),
  • 這大大減輕了服務(wù)端的壓力, 前端, 移動(dòng)端, 經(jīng)常需要的數(shù)據(jù)不同, 所以 服務(wù)端要維護(hù)好多接口, 甚至還要有好多版本 V1,V2 等等
  • So, 以后有時(shí)間一定要實(shí)踐下 GraphQL

Heroku 部署 Node 工程

Heroku 是非常好用的后端部署平臺(tái), 提供各種運(yùn)行環(huán)境, Node, python , PHP 等, 可以直接把代碼部署運(yùn)行在 Heroku 上, 非常方便

我現(xiàn)在的使用方式是 :

  1. 代碼 commit push 到 github
  2. CI 跑 unit test (根本不寫測試代碼)
  3. Heroku 關(guān)聯(lián) github 項(xiàng)目, push 觸發(fā) Heroku deploy hook, 自動(dòng) pull 并部署代碼
  4. 完成后 Slack 通知我部署狀態(tài)

How to Deploy Your Slack Bots to Heroku

學(xué)習(xí)成果

就是最基本的 MongoDB 實(shí)現(xiàn)的 RESTFul API

V2EX_Nodejs : V2EX 最近的文章, 登錄, 注銷接口
類似云課堂的接口 : 這個(gè)代碼質(zhì)量還不錯(cuò)... 部署在我的 Vultr VPS 上

不錯(cuò)的文章

RESTful API design with Node.js
10 Best Practices for Writing Node.js REST APIs

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift版本點(diǎn)擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,993評(píng)論 7 249
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,825評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,511評(píng)論 19 139
  • 手輕輕敲擊著鍵盤,我突然心里一陣疼痛,想起剛剛分開的你。這是一個(gè)普通的白天,只是秋天的陽光比較婉約。 ...
    顧琪閱讀 331評(píng)論 0 2
  • 《龍薩九節(jié)佛風(fēng)》 前行,皈依發(fā)心。 諸佛正法賢圣僧, 直至菩提永皈依, 以我所修諸善根, 為利眾生愿成佛。 正行,...
    白海螺閱讀 3,049評(píng)論 0 1

友情鏈接更多精彩內(nèi)容