为什么invalid memory address or nil pointer dereference跑步时问候给我?
type Response struct {
Message string `json:"message"`
}
type ResponseList struct {
Items []*Response `json:"items"`
}
func (gs *GreetingService) List(r *http.Request, req *Request, resp *ResponseList) error {
greets := make([]*Response,2,2)
greets[0].Message="hello"
greets[1].Message="goodbye"
resp.Items = greets
return nil
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Gmail Oauth。
当我用immediate:true调用这个函数时,它仍然在授权时显示弹出窗口。
请让我知道是否存在任何错误,以及任何替代方法。
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, callbackAuthResult);
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
function signin(getAuthStatus) {
gapi.auth.authorize({
'client_id': 'myID',
scope: 'email', immediate: true
},getAuthStatus);
}
function getAuthStatus() {
gapi.client.Myendpoint.MyEndpointMethod().execute(function (resp) {
console.log(resp);
}
Run Code Online (Sandbox Code Playgroud) javascript oauth-2.0 google-cloud-endpoints google-oauth google-api-js-client
我正在尝试部署一个包含类型参数的file简单端点。
我将gcloud service-management deploy命令与以下符合 openapi 的 yaml 一起使用:
swagger: "2.0"
info:
description: "Image API"
title: "Image API"
version: "v1"
host: "image-api.endpoints.myproject.cloud.goog"
basePath: "/v1"
schemes:
- "https"
paths:
"/images":
post:
description: "Adds an image"
operationId: "add"
consumes:
- "multipart/form-data"
produces:
- "application/json"
responses:
201:
description: "An image create response"
schema:
$ref: "#/definitions/ImageResponse"
parameters:
- name: filepath
in: formData
required: true
type: string
- name: image
in: formData
required: false
type: file
definitions:
ImageResponse:
type: object
properties: …Run Code Online (Sandbox Code Playgroud) google-cloud-endpoints gcloud openapi google-cloud-endpoints-v2
尝试将 Google Cloud 平台与部署了 GKE 的后端一起使用。
我有一个用于端点的 swagger 文件,在不使用安全性时可以正常工作。
我在 swagger 文件中添加了 api 密钥定义:
paths:
/create:
post:
...
security:
- api_key: []
securityDefinitions:
api_key:
type: "apiKey"
name: "key"
in: "query"
Run Code Online (Sandbox Code Playgroud)
现在如果我尝试发帖,我会得到预期的结果
{
"code": 16,
"message": "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "service_control"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我更新帖子请求以包含?key=API_KEY并收到以下错误:
{ …Run Code Online (Sandbox Code Playgroud) permissions api-key google-cloud-endpoints google-cloud-platform
在从模型类生成Endpoint之后,我编辑ClassnameEndpoint文件以生成一个方法,该方法将使用修改后的SELECT字符串返回实体列表.
不知何故,这会导致冲突和生成客户端库失败,如下所示:
信息:已成功处理C:\ Users\1177\AndroidStudioProjects\N5\appN5-AppEngine\target/generated-sources/appengine-endpoints\WEB-INF/appengine-web.xml [ERROR] com.google.api.server.spi .config.validation.ApiConfigInvalidException:具有相同休息路径的多个方法"GET eventdata":"listUserEventData"和"listEventData"
这是ClassnameEndpoint.java,它在生成后手动编辑:
注意listEventData和listUserEventData是相同的,但SELECT字符串除外...
那么如何创建一个端点方法来获取所有实体,另一种方法来获取没有冲突的SOME实体?
package sic.example.appn5;
import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.ApiNamespace;
import com.google.api.server.spi.response.CollectionResponse;
import com.google.appengine.api.datastore.Cursor;
import com.google.appengine.datanucleus.query.JPACursorHelper;
import java.util.List;
import javax.annotation.Nullable;
import javax.inject.Named;
import javax.persistence.EntityExistsException;
import javax.persistence.EntityNotFoundException;
import javax.persistence.EntityManager;
import javax.persistence.Query;
@Api(name = "eventdataendpoint", namespace = @ApiNamespace(ownerDomain = "example.sic", ownerName = "example.sic", packagePath = "appn5"))
public class EventDataEndpoint {
/**
* This method lists all the entities inserted in datastore.
* It uses HTTP GET method and paging support.
*
* @return …Run Code Online (Sandbox Code Playgroud) rest google-app-engine google-cloud-endpoints android-studio
似乎Objectify不支持数据存储区CompositeFilter.但客观化确实需要Filter.那么现在我如何AND在客体化中实现复合滤波器?我正在从Datanucleus转移,我需要查询
"SELECT f.healthy FROM Food f WHERE f.fan = :userid AND flavor = : flavor";
Run Code Online (Sandbox Code Playgroud)
所以类型是Food.class和字段是fan和flavor
google-app-engine objectify google-cloud-endpoints google-cloud-datastore
这个问题很相似,这其中,只有更差......在我的测试,因此即使是很小的整数1转换为字符串.这是我的MWE:
app.yamlapplication: your-app-id
version: 1
runtime: python27
threadsafe: true
api_version: 1
handlers:
- url: /_ah/spi/.*
script: example.app
secure: always
libraries:
- name: endpoints
version: 1.0
Run Code Online (Sandbox Code Playgroud)
example.pyimport endpoints
from protorpc import messages
from protorpc import message_types
from protorpc import remote
package = 'Example'
class Number(messages.Message):
number = messages.IntegerField(1)
@endpoints.api(name='example', version='v1')
class ExampleApi(remote.Service):
@endpoints.method(message_types.VoidMessage, Number,
path = "getNumber", http_method='GET', name = 'getNumber')
def get_number(self, _):
return Number(number = 3) # This is a small integer. Isn't? …Run Code Online (Sandbox Code Playgroud) 我目前正在为RESTful API开发一个带有GAE端点的Swift iOS应用程序.如果您需要在客户端使用API,似乎所有教程和文档都会使您生成并使用客户端库.我想知道我是否可以通过使用普通网址请求或Alamofire来使用API并以JSON格式获得结果?
我有一种方法可以生成带有一些数据库记录的 CSV 文件
public static void generateCsvForAttendees( List<Attendee> attendeeList ) throws FileNotFoundException
{
PrintWriter pw = new PrintWriter(new File("test.csv"));
StringBuilder sb = new StringBuilder();
//Header
sb.append( "Id" );
sb.append( ',' );
sb.append( "Name" );
sb.append( ',' );
sb.append( "Lastname" );
sb.append('\n');
//Content
for( Attendee attendee: attendeeList )
{
sb.append( attendee.getId() );
sb.append( ',' );
sb.append( attendee.getUser().getName() );
sb.append( ',' );
sb.append( attendee.getUser().getLastname() );
sb.append( '\n' );
}
pw.write(sb.toString());
pw.close();
}
Run Code Online (Sandbox Code Playgroud)
我希望该方法是一个端点,以便从任何类型的客户端(网络或移动设备)调用它来下载它。在Google Cloud Endpoint 文档中,没有关于 File 作为有效返回类型的内容。我如何创建和端点返回文件?
java google-app-engine google-cloud-endpoints google-cloud-platform
我使用谷歌云端点(版本1,使用android studio)为我的Android应用程序构建了一个移动后端.我希望通过电子邮件/密码验证我的用户,因此我使用Firebase身份验证来执行此操作.Firebase身份验证sdk允许我在客户端(在android中)获取每个用户的令牌,而firebase管理员sdk允许我检查后端令牌的有效性.我了解在云端点我可以提供自己的自定义身份验证器(请参阅:Google Cloud端点和用户身份验证),我计划在我的自定义身份验证器中调用firebase admin sdk来验证用户的呈现令牌.
我的问题是,因为我使用谷歌云端点来构建我的后端,我不知道在我可以验证任何令牌之前,在哪里插入代码来执行firebase管理对象的初始化.在常规应用程序引擎环境中,您将在HTTPServlet的init()方法中执行此初始化(请参阅https://github.com/GoogleCloudPlatform/firebase-appengine-backend/blob/master/src/main/java/com /google/cloud/solutions/flexenv/backend/MessageProcessorServlet.java),但云端点通过自动提供"SystemServiceServlet"作为HTTPServlet来隐藏此信息.我已经尝试了继承SystemServiceServlet并重写init()方法,但是然后将端点部署到app引擎失败了,因为显然,创建android客户端库要求必须使用SystemServiceServlet(并且必须将其命名为"SystemServiceServlet") ").
我可以在云端点提供的每个api方法中初始化firebase管理应用程序(例如,在我的api的insert方法中),但这看起来效率极低.如何在使用谷歌云端点构建的后端中使用Firebase管理员sdk?
非常感谢你花时间陪伴
google-app-engine android google-cloud-endpoints firebase-authentication firebase-admin
我们使用android studio创建了Google Endpoint api v1。我们已收到来自Google Cloud的电子邮件,该电子邮件已弃用Google Api v1版本。因此,我们尝试将v1更新为v2。因此,请参考以下链接进行迁移。https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java/migrating-android#before_you_begin
更改后,当我们尝试运行该时间时,显示'... / backend / build / exploded-app'不存在
如果查看项目中的目录树,则可以看到基于模块名称“ backend”和包含Discovery文档的“ endpointsDiscoveryDocs”的分解目录“ ../build/exploded-backend”。
不可用' ... / backend / build / exploded-app '和' ... / backend / build / endpointsClientLibs '
当我尝试执行时,构建成功,但显示在运行后端错误:无法启动进程,工作目录'... \ MyAppliaiton \ backend \ build \ exploded-app'不存在
我的Android项目中使用了以下build.xml
MyApplication build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.google.guava:guava:19.0'
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)
应用程式build.gradle
**apply plugin: …Run Code Online (Sandbox Code Playgroud)