Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Appengine ID/名称vs WebSafeKey_Java_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Java Appengine ID/名称vs WebSafeKey

Java Appengine ID/名称vs WebSafeKey,java,google-app-engine,google-cloud-datastore,Java,Google App Engine,Google Cloud Datastore,在java中编写端点时,为了通过键查找项,我应该使用键的Id还是webSafeString?在什么情况下这很重要?这取决于你 实体是否有父实体?然后,您可能希望使用urlsafe表示,因为单个字符串将包含实体的完整路径。如果您使用了一个ID,那么您可能需要手动包含所有父级到根级的ID 没有数字/字母数字的父ID(&ID)?然后使用ID,因为它们看起来更干净,这不是规则,完全取决于您 没有父母,但ID中有特殊字符?使用urlsafe表示法,因为如果不在HTTP中编码某些特殊字符,您可能会遇到无法使

在java中编写端点时,为了通过键查找项,我应该使用键的Id还是webSafeString?在什么情况下这很重要?

这取决于你

实体是否有父实体?然后,您可能希望使用urlsafe表示,因为单个字符串将包含实体的完整路径。如果您使用了一个ID,那么您可能需要手动包含所有父级到根级的ID

没有数字/字母数字的父ID(&ID)?然后使用ID,因为它们看起来更干净,这不是规则,完全取决于您

没有父母,但ID中有特殊字符?使用urlsafe表示法,因为如果不在HTTP中编码某些特殊字符,您可能会遇到无法使用这些字符的问题

注1:urlsafe表示法对实体名称进行了编码,可以轻松解码,这不太可能是隐私问题,但您仍应注意这一点。实际的数据ID也是简单编码的,并且可以很容易地解码,所以在使用个人信息(如电子邮件)作为ID时要小心,使用urlsafe它们是不安全的

注2:如果您决定在将来的父子关系中更改数据的结构,您可能会被发布给用户的一些urlsafe数据所困扰,这些用户不知道您可能已经做了哪些更改


谢谢你的回答!但是,如果信息可以从websafekey中解码,难道没有其他更安全的方法通过密钥/ID检索实体吗?或者是一种更难对传递给查询的信息进行解码的方法?ID通常是随机生成的,因此不包含任何敏感信息,因此无需对其进行加密,但如果您担心您的URLSafe会泄露敏感信息,则只需在传输给用户之前对其进行加密,然后在带着一个只有你的应用程序才知道的秘密密钥回来。写得很棒。你能澄清你所说的注释2是什么意思吗?@MicroR是的,尽管你提供的密钥似乎有点不完整——它仍然只是一个稍微修改的base64编码,而不是任何人都可以轻松解码的加密。注2:我的意思是,如果你在URL中使用urlsafe,你的应用程序名称、父/子信息(全部编码在urlsafe字符串中,并且如果将来有任何更改),你可能会断开链接。