Swagger と Node.js を使用して、GET を呼び出したときに「Hello」を出力する単純な Hello World アプリケーションを作成しようとしていますが、次のエラーが表示されます: TypeError: res.json is not a function。Swagger Editor を使用して、次の 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(greeting) が機能することがわかりました。res.json と res.send がそうでない理由を誰でも説明できますか?