我们今天开始迈出小黄书项目实战的第一步。前几篇文章就主要围绕Nodejs+Express的架构的构建。当我们架构建好之后,到时我们只需要在需要的位置填写代码就好了,开发起来就能非常快速。

本篇文章作为这一系列的开篇之作,主要会给大家阐述这几点:

  • 如何通过Restful Client工具来调试小黄书服务器

  • 实现一个简单的Express版本HelloWorld,并对一些容易忽略的知识点进行拾遗补缺

本章过后,我们将一起不断的对这个HelloWorld进行扩展,最后做成能满足我们小黄书这个产品的需求的强大后台。请大家拭目以待。
#1. Insomnia

工欲善其事必先利其器。开发调试Resftful API的服务,我们需要有些好的工具进行支持。当然,如果你是命令行控的话,通过curl等工具来完成应该是挺具极客精神的。

1.1 Postman vs Insomnia

[Postman示例]

[Insomnia示例]

对于调试Restful API的工具,最出名的应该就是谷歌的Postman工具。但是这个工具是个内存和CPU消耗大户(至少在我的Mackbook pro乞丐版上是如此,很容易就耗掉我1G多的内存和冲爆我的CPU)。

所以后来我不得不换了另外一个叫做Insomnia的工具,我在postman用到的功能,在Insomnia上基本都有。唯一缺失的就是:

  • 不能将请求返回的数据自动提取出来保存到环境变量之中

也就是说,比如,登录后获取的访问令牌,我们必须手动将其设置到环境变量中,然后访问其他需要提供令牌才能调用的api就能直接从环境变量中获取到该令牌,并设置到请求头的Authorization字段来进行api的访问。而在postman工具中,我们是可以通过几行脚本轻松让其自动实现这一点的。

从Insomnia的官方文档中我们得知,这个功能往后的版本应该很快就会提供,这对我们来说也是个好消息.

Technical Questions
How can I set an environment variable from a request?
At this time, that is not possible, but it’s coming soon.

1.2 Insomnia下载和文档

请访问Insominia官网获取相关信息,这里不做赘述。

  • 下载:https://insomnia.rest

  • 官方文档:https://insomnia.rest/documentation/

1.3 Insomnia环境配置

首先打开Insomnia应用,定位到如图的环境配置管理。

打开后会进入环境配置页面,这里我们可以看到左边有Base Environment和Sub Environment, 其实这个概念类似于面向对象中的继承。我们可能会有本地开发调试用的localhost子环境,部署到staging后的staging服务器子环境,部署到production后的production子环境,我们可以在Base Environment中配置我们各个子环境共用的一些环境变量。比如,我们今后可能会在请求Restful API时携带同一个locale设置。那么,我们可以设置如下:

跟着我们开始进行我们的本地开发调试子环境的配置。点击左边的Sub Environments后面的+号新建一个叫做localhost的子环境,环境变量配置如下:

这里各个自定义的环境变量的意义如下:

  • api_host: 指定我们的api请求应该发送到的目的地,这里就是我们的本地小黄书开发服务器。

  • base_path: 考虑到我们API的扩展性,所以我们应该对api进行版本控制。比如多年之后,我们的一些用户可能还用着老的客户端,使用者老的登录API来进行登录:http://localhost:3000/v1/auth/login。而在最新的客户端中,我们已经升级了登录API,使用了第二版的登录API:http://localhost:3000/v2/auth/login。

  • token: 这里是用来存储我们的访问令牌。我们有些api必须要有admin的权限才能访问,所以在访问该api时必须带上拥有该权限的令牌

  • schemes: http协议的版本。本地调试时我们一般用的是http版本,但部署到produciton上时,我们有可能会搭建起https来进行更安全的访问。

1.4 Insomnia 使用

点击如图+按钮创建一个叫做‘小黄书‘的顶层目录。

我们的api请求可以在这个目录下面进行组织。

这里我们可以尝试下创建一个叫做helloworld的Post请求,当然,这个api现在还不能调用,因为我们的helloworl还没有写出来。该请求的格式应该是这样的:

这个请求会发送一个JSON格式的数据到服务器的helloworld接口,所以我们需要在请求Header中指定我们的Content-Type:

同时,我们现在用的url都是hardcode的,如果我们不在localhost这个子环境中调试的话,我们就需要整串url进行修改。所以我们这里需要应用上前面描述的Insomnia的环境变量。那么我们怎么引用环境变量呢?其实很简单,将对应的变量名通过两个大括号{{}}引用起来就行了。

比如,我们上面的URL替换成环境变量之后将会是:

{{schemes}}

[小黄书后台]Insomnia及HelloWorld相关推荐

  1. [小黄书后台]文件上传到服务器

    上一篇文章我们实现了小黄书后台框架中的鉴权服务.今天我们会开始实现文件上传的服务,因为我们参考的小红书中有很多地方是需要上传图片的,比如商品的图片等. 1. Express Multer中间件 Exp ...

  2. [小黄书后台]手机短信验证码

    上一章我们实现了将图片上传到又拍云上的功能.今天我们会实现手机验证码的功能. 我们现在到处都会碰到手机验证码的验证方式,比如在注册的时候,通过输入手机号码,获取一个验证码,然后输入完成注册. 1. 螺 ...

  3. [小黄书后台]会员管理及微信授权登录

    通过前几章小程序的UI实践,我们小黄书的Home页面已经有一个基本的呈现.但是,所有的数据还都只是mock模拟的数据,还没有任何跟小黄书服务器进行交互的动作. 今天开始,我们会逐步增加小程序和服务器的 ...

  4. [小黄书后台]文件上传到CDN

    上一篇文章我们通过multer这个中间件将图片顺利的上传到了我们的服务器上面,且将图片的元数据存储到了Image这个mongodb的collections里面. 这一章我们看下应该如何将文件上传到cd ...

  5. [小黄书管理平台]登录服务的实现

    上一章我们重新定制了登录页面,且学习了angularjs通过模型驱动表单,更好的对表单以及表单下面的控件进行控制. 这一章我们会开始动手写代码,实现小黄书管理平台的登录功能.其中涉及以下几个点: 支持 ...

  6. [小黄书小程序]微信授权登录

    在上一篇文章中,我们在后台实现了会员管理以及会员注册登录的逻辑.其中登录方式包括: 通过手机号码和验证码登录 通过微信授权登录 在小黄书小程序上,我们支持第二种登录方式.第一种方式,今后看情况再酌情进 ...

  7. [小黄书小程序]导航栏和标题栏界面

    我们前面几章已经将小黄书的后台基础框架给搭建好了.后台的小黄书相关的业务逻辑,会在往后根据客户端的业务需求来进行实现. 今天起我们会开始小黄书小程序的实现. 我们先看下小红书应用的主界面. 这一篇文章 ...

  8. [小黄书管理平台]登录页面和模型驱动表单

    上一章我们对小黄书管理平台实现了中文国际化的支持,让我们的管理平台可以根据浏览器当前的语言来自动显示中文或者英文. 本章我们计划开始看下ng2-admin的登录页面: 如何通过Formbuilder来 ...

  9. [小黄书小程序]主页面搜索栏和flex布局

    上一章我们实现了小程序的导航栏和标题栏的呈现,今天我们会开始小黄书主页面的相关界面. 因为本人对css不是很熟悉,所以涉及到的知识点都会写得比较细,对于熟悉的朋友来说,也许会觉得比较冗余.所以大家酌情 ...

最新文章

  1. Java 虚拟机总结给面试的你(下)
  2. 初涉网络实验-路由器端口的开启与配置
  3. 我们学校的DV作品——《感悟青春》
  4. RocketMQ(一):Linux安装RocketMQ和常用命令
  5. java list 排序_Java中List的排序
  6. python读取有空行的csv_如何在使用python读取CSV文件时跳过空行
  7. 传智杯Java终端有一天您厌烦了电脑上又丑又没用的终端,打算自己实现一个 Terminal
  8. 自写函数的防抖和节流
  9. SQL语句中常用关键词及其解释如下.pdf
  10. Android:复杂listview条目
  11. vscode集成linux的git,vscode中内置集成终端显示为git(bash.exe)
  12. 第四期_Metasploit 基础(二)MSFconsole《Metasploit Unleashed Simplified Chinese version(Metasploit官方文档教程中文版)》
  13. VC(Visual Studio C++)虚拟键VK值列表
  14. 加载、编辑和保存Wod格式所见所得的Word文档处理控件TX Text Control ActiveX
  15. 2020年全球数据中心十大发展趋势
  16. Unity3D windows平台视频录制录屏插件 UnityRecorder
  17. Git config --global user.email or user.name
  18. Redis修行 — 基数统计:HyperLogLog
  19. Keil5添加STM32芯片包
  20. 程序员工作猝死给公司造成损失可以找其父母追讨吗?

热门文章

  1. Java人才招聘求职管理系统源码前后端带文字搭建教程
  2. python 实战之模仿开发QQ聊天软件(二)MySQL数据库的连接和使用
  3. SwiftUI学习记录
  4. 哔哩哔哩直播姬和OBS源码对比
  5. 《软件测试常见面试题十二》
  6. Mac终端关于ld: library not found for -lnetcdff错误的解决办法
  7. uva 10286 Trouble with a Pentagon
  8. Unity植物大战僵尸游戏素材+源码
  9. [TI-Sitara]启动流程
  10. 橘子树拍击弦贝司音源 Orange Tree Samples CoreBass Cherry Slapped