Какие пакеты Golang использовать для Google App Engine

Недавно я начал изучать Google Identity Kit, используя golang в App Engine. Я уходил от примеров в googlesamples/identity- инструментарий-вперед. Просматривая код, я нашел несколько пакетов appengine для следующего:

"google.golang.org/appengine"
"google.golang.org/appengine/datastore"

Для приложения GAE Golang, над которым я работаю, я использую GAE SDK для запуска приложения с помощью goapp run. Однако в моем коде я ссылаюсь только

"appengine"
"appengine/datastore"

потому что это указывает на golang src, расположенный в извлеченном go appengine sdk.

Нужно ли вместо этого использовать пакеты google.golang.org appengine?

Я узнал об этом только после того, как понял, что appengine.Context, ожидаемый методами набора удостоверений, не соответствует тому, что я использовал. я получил эту ошибку

`cannot use c (type "appengine".Context) as type "golang.org/x/net/context".Context in argument to client.ValidateToken. "appengine".Context does not implement "golang.org/x/net/context".Context (missing Deadline method)`

несмотря на то, что я использовал appengine.NewContext(r) в качестве примера.


person John F.    schedule 30.11.2015    source источник
comment
Возможный дубликат Как правильно импортировать приложение Golang? и Golang: различные пакеты AppEngine   -  person icza    schedule 30.11.2015


Ответы (1)


Я рекомендую использовать пакеты google.golang.org/appengine, если вы можете. Они лучше сочетаются с языком, в первую очередь по причине, которую вы упомянули (context — это net/context), а также потому, что библиотеки новее и часто имеют больше возможностей. В частности, если вы планируете использовать другие сервисы Google (например, Google Cloud Storage), вам будет намного проще использовать новые библиотеки.

Но они также лучше, потому что — поскольку они являются обычными импортируемыми пакетами — они лучше работают со стандартным набором инструментов go: goimports для автоформатирования, gocode для автозаполнения и т. д.

Однако они не совсем полны. Некоторые функции отсутствуют или устарели. По моему опыту, раньше основной недостающей функцией был пакет aetest, который с тех пор был перенесено, так что сейчас очень мало причин не переключаться.

person Caleb    schedule 17.12.2015