【问题标题】:How to add an additional endpoint to the AWS Amplify Express Server?如何向 AWS Amplify Express 服务器添加额外的终端节点?
【发布时间】:2020-06-03 04:04:31
【问题描述】:

我已经使用 Amplify 生成了一个 REST express 服务器。

我尝试向它添加更多端点:

// using serverless express
app.post('/myendpoint', function(req, res) {
  console.log('body: ', req.body)
  res.json(req.body)
});

// using serverless express
app.get('/myendpoint', function(req, res) {
  res.json({success: 'get call to my endpoint succeed!', url: req.url});
});

运行amplify push 后,我在控制台中看不到这些端点,也无法通过放大向它们发出请求。

作为初始配置工作的一部分生成的端点。

添加更多 REST 端点的正确方法是什么?我感觉我缺少一些额外的配置步骤。

【问题讨论】:

    标签: javascript amazon-web-services rest express aws-amplify


    【解决方案1】:

    在部署 API 和函数后,要添加额外的路径,您应该使用“amplify update api”

    【讨论】:

    • 酷 - 看起来我们每个路径都需要一个快速服务器?换句话说,如果我们生成一个路径/items,那么我们可以为该路径拥有一个快速服务器。如果我们需要另一个路径/customers,那么我们需要一个新的快速服务器用于该路径。听起来对吗?
    • 放大 api 更新 apiName 然后添加一个新路径,在现有的无服务器应用程序中添加一个新路由,该路由存在于 lambda 函数中,或者如果它变得庞大,请将其放入同一个 API 中的自己的函数中.
    【解决方案2】:

    正如 Kevin Le 所说,运行“amplify update api”将允许您添加另一个“根”路径,例如“/items”或“/customers”,但我在添加嵌套路径时遇到了问题,例如“/customer” /addAddress”在初始 api 创建之后。

    我尝试过的:

    1. 我可以在 API 的初始创建期间添加它们,但不能在更新期间添加
    2. 我可以更改云形成模板以将它们包含在 API 网关中,但对嵌套路径的任何调用都会被根路径代理接收。
    3. 我可以将它们添加到 express lambda 函数中(违背 API Gateway 的目的)

    他们需要添加一些增强功能来放大其余 API,以便我们可以利用 API 网关。在我们可以分离 GET、POST、PUT 等函数之前,它并不是真正的无服务器。

    更新:我想在进一步调查后跟进。我找到的一个解决方案是在 API 网关的云形成文件中删除“根”路径的 {proxy} 端点。该文件应位于:“项目根”/amplify/backend/api/“api 名称”/“api 名称”-cloudformation-template.json。然后删除位于 Resources->"api name"->Properties->Body->paths->"api name"/{proxy+} 的路径。

    进一步调查:我还没有尝试过,但是云形成文件中路径的顺序可能会影响请求的处理方式,所以如果你将“根”代理移动到最后一个路径,你可能不必删除它。还要感谢 Piotr 修复了我糟糕的语法!

    【讨论】:

      【解决方案3】:

      您可以运行“放大更新 api” 然后选择添加新端点 并为此端点选择分配新(旧)lambda函数

      【讨论】:

        猜你喜欢
        • 2016-07-09
        • 2021-04-02
        • 2018-07-22
        • 2022-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-26
        相关资源
        最近更新 更多