0

我在尝试通过 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:“汽车”,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'),
                }
            });

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

失败并显示以下内容:{“消息”:“未经授权”,“类型”:“错误”}

关于如何编写代码来进行调用的任何想法?

4

1 回答 1

2

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

第二,您需要使用“同义词”,而不是“同义词”。

我用这些更改尝试了你的代码,它对我来说很好。

另外,我不确定你为什么在这里使用 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));  
              }
        });
于 2016-06-03T18:32:36.797 回答