0

我正在努力将路径参数从我的网关传递到实际端点,我使用 PUT 方法执行更新和 DELETE 方法在使用 Google Cloud Functions 构建的 API 中执行删除操作。

这是我的 API 网关配置:

# openapi2-functions.yaml
swagger: '2.0'
info:
  title: cpd-api
  description: API Gateway Config
  version: 1.0.0
schemes:
  - https
produces:
  - application/json
paths:
  /users/{user_id}:
    put:
      summary: Update an existing user
      operationId: update-user-cpd
      parameters:
        - name: user_id
          in: path
          description: User ID to be updated
          required: true
          type: string
      x-google-backend:
        address: https://asia-southeast2-project-id.cloudfunctions.net/cpd_user
        path_translation: APPEND_PATH_TO_ADDRESS
      responses:
        '200':
          description: User updated successfully
          schema:
            type: object
    delete:
      summary: Delete an existing user
      operationId: delete-user-cpd
      parameters:
        - name: user_id
          in: path
          description: User ID to be deleted
          required: true
          type: string
      x-google-backend:
        address: https://asia-southeast2-project-id.cloudfunctions.net/cpd_user
        path_translation: APPEND_PATH_TO_ADDRESS
      responses:
        '200':
          description: User deleted successfully
          schema:
            type: object
  /users:
    get:
      summary: Get Users data
      operationId: get-users-cpd
      x-google-backend:
        address: https://asia-southeast2-project-id.cloudfunctions.net/cpd_user
      responses:
        '200':
          description: User retrieved successfully
          schema:
            type: object
    post:
      summary: Create a new user
      operationId: create-user-cpd
      x-google-backend:
        address: https://asia-southeast2-project-id.cloudfunctions.net/cpd_user
      responses:
        '200':
          description: User created successfully
          schema:
            type: object

如果我直接使用 PUT/DELETE 方法调用函数 URL,它会按预期工作。例如PUT https://asia-southeast2-project-id.cloudfunctions.net/cpd_user/1

但是,当我尝试使用 API Gateway URL 调用它时,它会给我以下 404 HTTP 状态错误:

Cannot PUT /users/1

Cannot DELETE /users/1

这是 cpd_user index.js 文件。我使用 express JS 来定义路由

const _utils = require('./utils');
const _controller = require('./controllers');

const express = require('express');
const app = express();

const UserController = new _controller.UserController();
app.get('/', _utils.jwtFilter, UserController.getUserAction);
app.post('/', UserController.createUserAction);
app.delete('/{user_id}', _utils.jwtFilter, UserController.deleteUserAction);
app.put('/{user_id}', _utils.jwtFilter, UserController.updateUserAction);

exports.cpdUser = app;

我已经检查了日志,但在那里我没有得到任何有用的信息。请帮我解决这个问题。

谢谢。

4

0 回答 0