古い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)
しかし、エンコードされたキーの目的は、それをデコードする必要がないことです。
だから私の質問:エンティティの編集ページを符号化された鍵を受け入れ、ロードするための新しいクラウドコンソールを取得する方法が
ありますか?
ちょうど好奇心から、エンコードされていないキーを含めると何が問題になっていますか?とにかくコード化されたキーをデコードすることができますが、セキュリティを追加することはありません。 – icza
エンコーディングでは、名前空間や種類などを切り替えるときに、エラーや余分なコードを導入しないようにすることができます。これらのことを冗長にすれば、コードは長くなり、柔軟性は低くなります。 – matthewdavie
私は非常に似たような問題を解決しようとしています。私は物事を解読しなければならないかどうか気にしない、私はちょうど編集URLキーを構築する方法を解決できません。それは '0/| 12/EntityKind | 13/id:0000000000'の形式のようですが、余分な数字(12と13)がどこから来るのか分かりません。 – Chris