apiKeyRequired in google cloud endpoint not getting resolved

故事扮演 提交于 2019-12-25 18:38:31

问题


I am creating google cloud endpoint api, I am trying to use

apiKeyRequired = AnnotationBoolean.TRUE

as an example on https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/appengine/endpoints-frameworks-v2/backend/src/main/java/com/example/echo/Echo.java

 @ApiMethod(name = "echo_api_key", path = "echo_api_key", apiKeyRequired =AnnotationBoolean.TRUE) 
  public Message echoApiKey(Message message, @Named("n") @Nullable Integer n) {
return doEcho(message, n);
} 

My code is this. IDE is not able to resolve this attribute.

  @ApiMethod(
        name = "get",
        path = "name/{id}",
        httpMethod = ApiMethod.HttpMethod.GET,
        apikeyRequired = AnnotationBoolean.TRUE)

I decompiled the ApiMethod annotation, It don't have apikeyRequired attribute

  package com.google.api.server.spi.config;

 import com.google.api.server.spi.config.ApiMethodCacheControl;
 import com.google.api.server.spi.config.AuthLevel;
 import com.google.api.server.spi.config.Authenticator;
 import com.google.api.server.spi.config.PeerAuthenticator;
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;

 @Retention(RetentionPolicy.RUNTIME)
 @Target({ElementType.METHOD})
public @interface ApiMethod {
String name() default "";

String path() default "";

String httpMethod() default "";

/** @deprecated */
@Deprecated
ApiMethodCacheControl cacheControl() default @ApiMethodCacheControl;

AuthLevel authLevel() default AuthLevel.UNSPECIFIED;

String[] scopes() default {"_UNSPECIFIED_LIST_STRING_VALUE"};

String[] audiences() default {"_UNSPECIFIED_LIST_STRING_VALUE"};

String[] clientIds() default {"_UNSPECIFIED_LIST_STRING_VALUE"};

Class<? extends Authenticator>[] authenticators() default {Authenticator.class};

Class<? extends PeerAuthenticator>[] peerAuthenticators() default {PeerAuthenticator.class};

public static class HttpMethod {
    public static final String GET = "GET";
    public static final String POST = "POST";
    public static final String PUT = "PUT";
    public static final String DELETE = "DELETE";

    public HttpMethod() {
    }
   }
     }

回答1:


I had the same issue before. You need to make sure to remove all old app-engine-endpoints dependencies and use the new endpoint-framework

compile group: 'com.google.endpoints', name: 'endpoints-framework', version: '2.0.+'



回答2:


You need to capitalize the k. That is, apiKeyRequired, not apikeyRequired.



来源:https://stackoverflow.com/questions/42234080/apikeyrequired-in-google-cloud-endpoint-not-getting-resolved

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!