使用node.js和Express实现固定的响应结构

3
我们最近开始使用Node.js作为API服务器,而不是Java。除了Node.js提供的所有好处之外,我最想念的是缺少一个适当的API响应对象。
由于Javascript是动态类型语言,返回响应时可以即时创建对象。这与Java形成对比,我可以拥有一个类,其实例将被序列化为响应。我随时可以查找此类以确定API的响应内容。
在Node.js / Javascript中是否有这样的设计模式?我们希望我们的API严格符合此类模板对象。

你可以查看Swagger来对响应和请求对象进行文档化和验证。或者,你也可以使用Typescript来进行编译时类型检查。 - Vsevolod Goloviznin
2个回答

3
你可以自己制作它们。
举例来说,如果你正在使用ES6,你可以拥有各种错误和响应模块,并在创建这些响应的类中执行自己的验证。
例如,
// sample-response.js

class SampleResponse {
  constructor(message) {
    // validate `message` somehow

    this.data = message
  }
}

module.exports = {
  SampleResponse
}

无论您如何构建HTTP接口,您都可以发送任何响应(例如,使用Express):

res.send(new SampleResponse(message))

同样的,错误也是如此。在JavaScript中,并不一定受限于类型不足,你只需要用不同的方式执行操作。

如果你不使用ES6,可以像这样操作:

module.exports = {
  SampleResponse: function(message) {
    // do some validation

    return { data: message }; // or whatever you want
  }
};

1
  1. 你可以使用Flow或TypeScript编写代码。

  2. 你可以使用契约测试工具。根据你的REST API契约:

我的选择是使用TypeScript和Abao+RAML。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接