我的spring boot项目具有许多其他的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"
}
]
}
感谢您的宝贵意见。
致谢。
答案 0 :(得分:0)
获取404时,您的网址是什么?
您还可以提供已解析的服务配置吗?您可以通过CLI获取它
gcloud端点配置描述
答案 1 :(得分:0)
这可能是用于将API配置为端点的openapi.yaml与实际的spring-boot API代码之间的 missmatch 。
就我而言,我遇到了同样的问题,原因是在我的swagger文件(OpenAPI)中,我错过了 basePath 配置!我在GKE内运行的API代码期望以路径/api/v1
开头的请求,但这没有映射到我的端点配置(swagger.yaml)中。
检查在终端控制台的 Method 列中显示的路径是否与运行GKE的应用程序内部配置的路径相同。在我的方法控制台中,仅显示/elements
而不显示完整路径/api/v1/elements
,然后在更新我的OpenAPI配置并添加BasePath后解决了该问题。
参考: