【问题标题】:Undefined partial route (not params) using Express, React-native and HelloSign API使用 Express、React-native 和 HelloSign API 的未定义部分路由(不是参数)
【发布时间】:2017-02-15 20:19:37
【问题描述】:

我正在使用 HelloSign API 为 React Native 中的合同签署生成 web 视图。端点如下。

app.get('/api/contract/signcontract', Contract.viewAndSignContract);

这个端点在生成嵌入链接(与问题无关)后被命中,它呈现一个骨架 index.jade 并传递 hellosign.open 嵌入链接(URI 在传递到端点之前被编码,因此是解码)

exports.viewAndSignContract = function(req, res, next) {
  const embedLink = decodeURIComponent(req.query.url);
  res.render('index', {embedLink});
}

使用 hellosign.open() 呈现 hellosign 嵌入式流。这方面你已经看到了,我相信它完全是股票代码。端点是通过 webview 上的源 url 命中的,这是 react-native 代码,但足以说明一切都很普通。

<WebViewBridge
          ref="webviewbridge"
          onBridgeMessage={this.onBridgeMessage.bind(this)}
          source={{ uri: `${ROOT_URL}/api/contract/signcontract?url=${encodeURIComponent(this.props.partner.embedLink)}` }}
          style={{ flex: 1 }}
 />

错误是几乎每次用户打开嵌入式流时至少有 2 个获取请求:

第一个是偶尔的,不是每次。只是一个重定向。

"GET /api/contract/signcontract?url= HTTP/1.1" 304 - "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C89"

这两个是问题:

"GET /api/contract/signcontract?ux_version=2?parent_url=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fcontract%2Fsigncontract&amp;skip_domain_verification=1&amp;client_id=ID_HIDDEN&amp;user_culture=en_US&amp;debug=true&amp;js_version=1.2.5 HTTP/1.1" 304 - "http://localhost:3000/api/contract/signcontract?url=" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C89"

这里真正的错误是这个 /contract/undefined 虽然我不明白为什么在访问一个网页时会有多个 GET 请求。

"GET /api/contract/undefined?ux_version=2&amp;parent_url=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fcontract%2Fsigncontract&amp;skip_domain_verification=1&amp;client_id=ID_HIDDEN&amp;user_culture=en_US&amp;debug=true&amp;js_version=1.2.5 HTTP/1.1" 404 262 "http://localhost:3000/api/contract/signcontract?ux_version=2?parent_url=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fcontract%2Fsigncontract&amp;skip_domain_verification=1&amp;client_id=ID_HIDDENc&amp;user_culture=en_US&amp;debug=true&amp;js_version=1.2.5" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C89"

这些是本地终端日志,但是查看 Heroku 日志的情况相同。没有/contract/:params 路由,所以我看不到/signcontractundefined 的格式如何。这些请求总是以完全相同的时间戳发生,一个并不总是在另一个之前发生,它们会翻转。我还想提一下,它不会破坏整个应用程序。

这两个 GET 请求始终存在,但在最坏的情况下,它会在 web 视图中短暂显示 Cannot GET /api/contract/undefined?rest_of_params,然后重定向到真正的 hellosign 嵌入式流,一旦出现蓝月亮,它就不会重定向,而是停留在“无法获取”屏幕。这一切对我来说似乎非常违反直觉,我无法确定问题出在哪里。

【问题讨论】:

    标签: node.js express react-native hellosign-api


    【解决方案1】:

    我希望您的问题已经得到解决。

    但是,在查看此问题时,似乎在后端生成 sign_url 之前调用了要生成的 iFrame 的初始 API 调用。因此,在这种情况下进行了两次 GET 调用:一个没有 sign_url,一个有 sign_url。

    1. 生成请求
    2. 为各自的signature_id生成sign_url
    3. 将 sign_url 传递给客户端以填充 iFrame

    如前所述,联系 HelloSign 支持的最佳方式是直接联系我们的 API 团队。谢谢!

    【讨论】:

      猜你喜欢
      • 2015-05-09
      • 2021-01-05
      • 1970-01-01
      • 2017-10-30
      • 2020-11-30
      • 1970-01-01
      • 2019-10-15
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多