Search code examples
templatespathgoogle-cloud-endpointsopenapigoogle-cloud-endpoints-v2

Google endpoint path template "Path does not match any requirement URI template."


Hi to all I created and used openAPI by yaml and I created endpoint that maps 2 cloud functions which use path templating to route the call no error by google sdk cli. Now I call by POST https://myendpointname-3p5hncu3ha-ew.a.run.app/v1/setdndforrefcli/12588/dnd?key=[apikey] because it's mapped by below open api and reply me "Path does not match any requirement URI template.". I don't know why path template in endpoint not work I added path_translation: APPEND_PATH_TO_ADDRESS to avoid google to use CONSTANT_ADDRESS default which append id in query string with brutal [name of cloud function]?GETid=12588 and overwrite query parameters with same name. Somebody can tell me how can I debug the endpoint or the error in openAPI (that have green check ok icon in endpoint)?

# [START swagger]
swagger: '2.0'
info:
  description: "Get data "
  title: "Cloud Endpoint + GCF"
  version: "1.0.0"
host: myendpointname-3p5hncu3ha-ew.a.run.app
# [END swagger]
basePath: "/v1"
#consumes:
#  - application/json
#produces:
#  - application/json
schemes:
  - https
paths:
  /setdndforrefcli/{id}/dnd:
    post:
      summary: 
      operationId: setdndforrefcli
      parameters:
       - name: id         # is the id parameter in the path
         in: path         # is the parameter where is in query for rest or path for restful
         required: true
         type: integer
         format: int64
         minimum: 1
      security:
        - api_key: []
      x-google-backend:
        address: https://REGION-PROJECT-ID.cloudfunctions.net/mycloudfunction
        path_translation: APPEND_PATH_TO_ADDRESS
        protocol: h2
      responses:
        '200':
          description: A successful response
          schema:
            type: string
# [START securityDef]
securityDefinitions:
  # This section configures basic authentication with an API key.
  api_key:
    type: "apiKey"
    name: "key"
    in: "query"
# [END securityDef]

Solution

  • I had the same error, but after did some test I was able to use successfully the path templating (/endpoint/{id}). I resolved this issue as follows:

    1 .- gcloud endpoints services deploy openapi-functions.yaml \ --project project

    Here you will get a new Service Configuration that you will to use in the next steps.

    2.-
    chmod +x gcloud_build_image ./gcloud_build_image -s SERVICE \ -c NEWSERVICECONFIGURATION -p project

    Its very important change the service configuration with every new deployment of the managed service.

    3.- gcloud run deploy SERVICE \ --image="gcr.io/PROJECT/endpoints-runtime-serverless:SERVICE-NEW_SERVICE_CONFIGURATION" \ --allow-unauthenticated \ --platform managed \ --project=PROJECT