2016-04-25 14 views
3

古いApp Engine Datastoreコンソールから新しいコンソールに移行しています。内部的には、特定のデータストアエンティティへのリンクを生成しようとしています。 Google Cloud DatastoreのURLセーフキーの使用

は旧GAEコンソールの場合は、次のような、エンティティにリンクするURLエンコード安全なキーを使用することができます。 keyエンティティからエンコードされたURLに安全な鍵です

return fmt.Sprintf("https://appengine.google.com/datastore/edit?key=%s", key)

はしかし、新しいクラウドコンソールで、Googleのリターンは、私はURLをロードしようとすると、「ロードに失敗しました」:

return fmt.Sprintf("https://console.cloud.google.com/datastore/entities/edit?key=%s", key)

keyは、エンティティからエンコードされたURLセーフキーです。

私は、キーを最初にデコードし、URLに名前空間と種類を与える場合、それはロードされますが、それは実体クエリページ(ない編集ページ)だ場合にのみ:

return fmt.Sprintf("https://console.cloud.google.com/datastore/entities/query?ns=%s&kind=%s&key=%s", namespace, kind, key)

しかし、エンコードされたキーの目的は、それをデコードする必要がないことです。

だから私の質問:エンティティの編集ページを符号化された鍵を受け入れ、ロードするための新しいクラウドコンソールを取得する方法が

ありますか?

+0

ちょうど好奇心から、エンコードされていないキーを含めると何が問題になっていますか?とにかくコード化されたキーをデコードすることができますが、セキュリティを追加することはありません。 – icza

+0

エンコーディングでは、名前空間や種類などを切り替えるときに、エラーや余分なコードを導入しないようにすることができます。これらのことを冗長にすれば、コードは長くなり、柔軟性は低くなります。 – matthewdavie

+0

私は非常に似たような問題を解決しようとしています。私は物事を解読しなければならないかどうか気にしない、私はちょうど編集URLキーを構築する方法を解決できません。それは '0/| 12/EntityKind | 13/id:0000000000'の形式のようですが、余分な数字(12と13)がどこから来るのか分かりません。 – Chris

答えて

0

Googleでは、URLセーフキーを正しく処理するようにコンソールを更新しているため、この問題は解決されました。

関連する問題