Вы не можете установить значение в контексте запроса, затем перенаправить на другой URL-адрес и ожидать получить это значение. Вы должны передать это значение как часть перенаправления, используя параметр запроса или команду cook ie, et c. Или вы можете сделать это без перенаправления и напрямую вызвать обработчик для перенаправленного URL.
Если вы хотите сделать это с поваром ie, вы можете получить aid
в обработчике, установить повар ie, содержащий aid
с использованием http.SetCookie
, и перенаправление с использованием http.Redirect
. Другой обработчик должен получить повар ie.
. Если вы хотите сделать это с помощью параметра запроса, вы можете написать URL перенаправления с добавленным параметром запроса, перенаправить с помощью http.Redirect
и проанализировать его в другой обработчик.
Если вы хотите сделать это без перенаправления, вы можете получить aid
в одном обработчике, поместить его в контекст запроса и напрямую вызвать другой обработчик:
request.WithContext(context.WithValue(request.Context(),key,aid))
otherHandler(writer,request)
Вы можете автоматизировать переадресацию другому абоненту, используя Router.Match
с одним обработчиком:
- Зарегистрировать обработчик для pathprefix
/api/b/{aid}/
- Анализ обработчиков
aid
- Обработчик переписывает URL-адрес
/api/a/<remaining path>
, устанавливает для него request.URL
и использует router.Match
для поиска соответствующего пути в /api/a
поддереве - Обработчик вызывает обработчик для
/api/a/<remaining path>