aws / aws/bedrock-agentcore-sdk-python
Processing Request Headers
- Lenguaje dominante
- Python
- Estrellas
- 761
- Forks
- 147
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 7
Descripción
**Is your feature request related to a problem? Please describe.**
When handling invocation requests, I need a reliable mechanism to parse specific headers and pass them to the handler function. I have not found a recommended approach for achieving this within the current framework. While I can implement a Starlette middleware to populate `request.state`, this state is not accessible within my handler.
Could you please advise on the best practice for accomplishing this?
**Describe the solution you'd like**
I would like to have the ability to pass `request.state` (or a similar context containing parsed headers) directly to the handler function. I have included a relevant code snippet below to illustrate the change that would address this need.
**Describe alternatives you've considered**
- Overriding the internal `_build_request_context` method, although I am hesitant to do so since it is not intended for external use.
- Adding an additional route via `app.routes.append`, but this approach requires rewriting significant portions of the existing `_handle_invocation` logic, which is not ideal.
**Additional context**
Please see the code snippet below for reference:
```
async def _invoke_handler(self, handler, request_context, takes_context, payload):
try:
args = (payload, request_context) if takes_context else (payload,)
if asyncio.iscoroutinefunction(handler):
return await handler(*args)
else:
loop = asyncio.get_event_loop()
return await loop.run_in_executor(None, handler, *args)
```
Guía de contribución
Línea de trabajo
Comienza leyendo las rutas internas _build_request_context y _handle_invocation, y luego compáralas con la firma propuesta de _invoke_handler en el issue. Determina cómo se representan actualmente los encabezados de la solicitud analizados y request.state, y si el contexto de handler solicitado encaja con el framework. Se considerará terminado cuando exista un enfoque aprobado por un maintainer, con un comportamiento claro y cobertura para los handlers de invocación.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- api, backend
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 28/100