使用 Swagger 从 NodeJS 调用 Wordnik API

Call Wordnik API from NodeJS using Swagger

我在尝试通过 Swagger (NodeJS) 使用 Wordnik API 时遇到问题。

我正在尝试遵循此文档:swagger-api

Wordnik API 可以在这里创建:hhttp://developer.wordnik.com/docs.html#!/word/getRelatedWords_get_4

Wordnik API 的 JSON 描述:hhttp://developer.wordnik.com/v4/word.json

我正在尝试使用以下参数调用 GET /word.json/{word}/relatedWords 方法:

{word:"cars", useCanonical:true, relationshipTypes:"synonim", limitPerRelationshipType:10}

Wordnik API需要认证,根据swagger-api文档我写了如下代码:

 var Swagger = require('swagger-client');

            var client = new Swagger({
                url: 'http://developer.wordnik.com/v4/word.json',

            success: function() {
                client.word.getRelatedWords({word:"cars",useCanonical:true,relationshipTypes:"synonim",limitPerRelationshipType:10}, function(success){
                            console.log('succeeded and returned this object: ' + success.obj);
                        },
                        function(error) {
                            console.log('failed with the following: ' + error.statusText);
                        });
                },
                authorizations: {

                    api_key: new Swagger.ApiKeyAuthorization('api_key', 'MY_WORDNIK_API_KEY', 'query'),
                }
            });

我的主要问题是我不知道如何正确编写代码以使用该参数调用该方法。上面写的代码returns这个错误:

failed with the following: {"message": "unauthorized", "type": "error"}

知道如何编写代码来进行该调用吗?

两件事:第一,Wordnik 的 Swagger url 应该是
http://api.wordnik.com/v4/word.json

二,你需要使用'synonym',而不是'synonim'。

我尝试了您的代码并进行了这两项更改,对我来说效果很好。

另外,我不确定你为什么在这里使用 Swagger.js?它绝对更酷,但您可以根据要求调用 API,例如:

request("http://api.wordnik.com:80/v4/word.json/"+'car'+"/relatedWords?useCanonical=false&relationshipTypes=synonym&limitPerRelationshipType=10&api_key=YOURKEYHERE", function (error, response, body) {
            if (error || response.statusCode !== 200 || (body == "")) {
                console.log(word + " had error: " + error)
                return callback(error || {statusCode: response.statusCode});
              }
              else {
                // console.log(word);
                callback(null, JSON.parse(body));  
              }
        });