我正在尝试使用Swagger和Node.js创建一个简单的hello world应用程序,打印出" Hello,"当我调用GET但我收到错误: TypeError:res.json不是函数。使用Swagger编辑器,我创建了以下yaml api:
---
swagger: "2.0"
info:
version: "1.0.0"
title: "Hello World"
paths:
/hello:
get:
x-swagger-router-controller: "hello_world"
description: "Returns 'Hello' to the caller"
operationId: "hello"
parameters:
- name: "name"
in: "query"
description: "The name of the person to whom to say hello"
required: false
type: "string"
responses:
200:
description: "Returns greeting"
schema:
type: "string"
title: "HelloWorldResponse"
400:
description: "Invalid characters in \"user\" were provided"
definitions: {}
我使用swagger编辑器生成node.js服务器并创建了一个hello_world.js控制器。当我尝试通过调用http://localhost:8081/hello?name=victory使用Swagger UI测试代码时,我看到了错误:TypeError:res.json不是函数。这是我的node.js代码:
'use strict';
var util = require('util');
module.exports = {
hello: hello
};
function hello(req, res) {
// variables defined in the Swagger document can be referenced using req.swagger.params.{parameter_name}
var name = req.swagger.params.name.value || 'stranger';
var greeting = util.format('Hello, %s!', name);
// this sends back a JSON response which is a single string
res.json(greeting); //ERRORS OUT HERE
}
我是Swagger和Node.js的新手,所以我不确定为什么我会收到错误或最好的解决方法。你能给我的任何帮助都将不胜感激。
更新:事实证明res.end(问候语)有效。任何人都可以解释为什么res.json和res.send不要?
答案 0 :(得分:4)
通过express.js将json
函数添加到响应对象中,但是swagger生成器生成使用connect.js(不表达)的代码。
Express建立在connect之上,如果你想要express的功能,你可以在swagger生成器生成的代码中轻松使用express代替connect。在index.js
中找到const app = require('connect')();
的行,并将'connect'替换为'express'。
答案 1 :(得分:-1)
使用这个
<块引用>utils.writeJson(res, "sucess").end();