【问题标题】:API Cluster - Using Custom Group Config for Default EndpointAPI 集群 - 为默认端点使用自定义组配置
【发布时间】:2016-01-28 09:18:13
【问题描述】:

我正在使用 Api Cluster 库。当我尝试创建多个 endpoint group 时,有时我可能只想使用默认的 endpoint 模式,但配置选项可能不同。

场景:如果我没有在组中提及“端点”,那么值应该取自默认的“端点”模式

请看这段代码click here

【问题讨论】:

  • 它只显示“Hello Plunker!”我什么也没看到..在控制台中它抛出错误 Uncaught TypeError: Cannot read property 'empDetails' of undefined
  • 此问题来自库本身,并在 Github 问题本身中进行了跟踪。 github.com/ramsunvtech/apicluster/issues/3

标签: javascript api endpoint apicluster


【解决方案1】:

这是API Cluster 1.0.5 JS 库中的限制之一。

因为 API Cluster 1.0.5 期望 addAnother / defaults 方法参数需要以下三个选项,这是强制性的。

  1. 姓名
  2. 配置
  3. 端点

Defaults / addAnother 方法创建端点组,每个组是独立的

尝试如下解决您的问题。

ApiCluster
  .defaults({
    name: 'mydefault',

    config: {
      'employee': 'emp',
      'details': 'defaultDetails',
      'timesheet': 'timesheet'
    },

    endpoints: {
      "empDetails": "_employee_/_details_/:empId/profile"
    }
  })
  .addAnother({
    name: 'v1',
    config: {
      'employee': 'emp',
      'details': 'v1Details',
      'timesheet': 'timesheet'
    },

    endpoints: {
      "empDetails": "_employee_/_details_/:empId/profile"
    }
  });

var empDetailURL = ApiCluster
  .use('v1')
  .get('empDetails')
  .arg({
    'empId': 1000
  })
  .query({
    'confirm': 'yes',
    'testAccount': 'yes'
  })
  .url();

【讨论】:

    【解决方案2】:

    问题在第 164 行 (ApiCluster.js)

    ApiCluster.generated = ApiCluster.data.apiUrls[groupName][name];
    

    它正在尝试从v1 组中获取“empDetails”。

    ApiCluster.generated = ApiCluster.data.apiUrls['v1']['empDetails']

    解决方法是将行更改为,

    ApiCluster.generated = ApiCluster.data.apiUrls[groupName] && ApiCluster.data.apiUrls[groupName][name] ? ApiCluster.data.apiUrls[groupName][name] : ApiCluster.data.apiUrls[ApiCluster.data.defaultGroupName][name];
    

    因此,如果该属性在请求的组中不可用,那么它将从默认值中读取它。

    这里是修复的网址:
    http://plnkr.co/edit/ys6btxjYH0xqh1kGuOVf?p=preview

    【讨论】:

    • 不错的一个。这将是解决方法而不是修复。看看这个plnkr.co/edit/Rnj30jIiKb1YWp0T9Akb?p=preview
    • 这是针对您的新问题报告的问题的修复程序。替换为此 ApiCluster.generated = ApiCluster.data.apiUrls[groupName] && ApiCluster.data.apiUrls[groupName][name] ? ApiCluster.data.apiUrls[groupName][name] : ApiCluster.data.apiUrls[ApiCluster.data.defaultGroupName][name];
    • 顺便说一句,问题仍未解决。它返回“emp/details/1000/profile?confirm=yes&testAccount=yes”但预期是“emp/details_emp/1000/profile?confirm=yes&testAccount=yes”
    • 知道了,问题需要在 ApiCluster 库中解决,需要清理。不确定把它放在这里的原因:)
    猜你喜欢
    • 2015-02-26
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    相关资源
    最近更新 更多