【问题标题】:Method does not exist: Deploying Cloud Endpoint方法不存在:部署 Cloud Endpoint
【发布时间】:2019-09-10 23:13:23
【问题描述】:

我的 Spring Boot 项目有大量的 REST API,并且要使用 Cloud Endpoint 进行部署,它会引发错误。应用程序在 GKE 中运行。

错误显示方法不存在。我已经提到了这个问题,我没有使用默认根路径来检查 openapi.yaml 中的状态

这里是配置:

openapi.yaml

# [START swagger]
swagger: "2.0"
info:
  description: "SPR API"
  title: "SPR API"
  version: "1.0.0"
host: "spr-api.endpoints.spr-mza-dev.cloud.goog"
# [END swagger]
schemes:
- "http"
paths:
  "/statuscheck":
    get:
      description: "Returns Status code"
      operationId: "status"
      parameters:
        - name: name
          in: query
          description: "Status verification"
          required: true
          type: string
      #produces:
      #- "application/json"
      responses:
        200:
          description: "Status 200"

Deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: spr-api
spec:
  ports:
  - port: 80
    targetPort: 8081
    protocol: TCP
    name: http
  selector:
    app: spr-api
  type: LoadBalancer
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: spr-api
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: spr-api
    spec:
      containers:
      # [START esp]
      - name: esp
        image: gcr.io/endpoints-release/endpoints-runtime:1
        args: [
          "--http_port", "8081",
          "--backend", "127.0.0.1:8080",
          "--service", "spr-api.endpoints.spr-mza-dev.cloud.goog",
          "--rollout_strategy", "managed",
        ]
      # [END esp]
        ports:
          - containerPort: 8081
      - name: spr-api
        image: "gcr.io/spr-mza-dev/sprapis:latest"
        ports:
          - containerPort: 8080

在到达终点时出现以下错误:

{
code: 5,
message: "Method does not exist.",
details: [
{
@type: "type.googleapis.com/google.rpc.DebugInfo",
stackEntries: [ ],
detail: "service_control"
}
]
}

感谢您的宝贵意见。

问候。

【问题讨论】:

    标签: google-cloud-endpoints google-kubernetes-engine


    【解决方案1】:

    这可能是 用于将 API 配置为端点的 openapi.yaml 与实际的 spring-boot API 代码之间的不匹配

    就我而言,我遇到了同样的问题,原因是在我的招摇文件 (OpenAPI) 中我错过了 basePath 配置!我在 GKE 中运行的 API 代码期待以路径 /api/v1 开头的请求,但这并未映射到我的端点配置 (swagger.yaml)。

    检查方法列中显示的到端点控制台的路径是否与运行到 GKE 的应用程序内部配置的路径相同。在我的方法控制台中仅显示 /elements 而不是完整路径 /api/v1/elements,然后在更新我的 OpenAPI 配置添加 BasePath 后,它就解决了。

    参考文献:

    【讨论】:

      【解决方案2】:

      收到 404 时你的 URL 是什么?

      能否提供解析后的服务配置?您可以通过 CLI 获取它

      gcloud 端点配置描述

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-05
        • 2019-06-04
        • 1970-01-01
        相关资源
        最近更新 更多