Leer parámetros dinámicos desde appsettings.json.
Estoy trabajando en el proyecto APIExecutor que es una aplicación de consola que lee la configuración requerida del archivo Appsettings.json, que es como se muestra a continuación:
{
"APIConfig": {
"RootAPI": "https://hub.dummyapis.com",
"API": [
{
"Url": "/employee",
"Method": "GET",
"Params": {
"noofRecords": 10,
"idStarts": 1001
},
"RequestType": "application/json",
"Headers": null
},
{
"Url": "/student",
"Method": "POST",
"Params": {
"name": "ABC",
"adress": "bla bla bla",
"IsPassed": true
},
"RequestType": "application/json",
"Headers": null
}
]
}
}
Quería mapearlo en la siguiente clase:
public class APIConfig {
public string Url { get; set; }
public string Method { get; set; }
public dynamic Params { get; set; }
public string RequestType { get; set; }
public List<requestheaders> Headers { get; set; }
}
En los parámetros anteriores, Params puede ser cualquier cosa, no sé cuál debe ser el tipo de Params, depende estrictamente de la llamada a la API. Por lo tanto, intenté hacerlo dinámico y objeto, pero cuando intento obtenerlo como se muestra a continuación:
var config = _builder.GetSection("APIConfig").Get<apiconfig>();
Aquí, _builder es una instancia de IConfiguration.
Ten en cuenta que los Params no están fijos. Puede ser cualquier cosa, dependiendo de la llamada a la API.
Obtengo null en la configuración. Sé que es debido a los parámetros dinámicos. Si elimino ese parámetro, se mapea correctamente.
No encuentro ninguna forma de mapear parámetros dinámicos al leer la configuración desde appsettings.json.
davy.ai
Solución para asignar parámetros dinámicos en Appsettings.json
Para asignar parámetros dinámicos en
Appsettings.json
mientras se utilizaIConfiguration
para leer configuraciones, podemos utilizar unDictionary<string, object="">
en lugar del parámetrodynamic
.Aquí hay un ejemplo de cómo podemos modificar la clase
APIConfig
para usar unDictionary<string, object="">
para la propiedadParams
:Ahora, al leer la sección
APIConfig
deAppsettings.json
, podemos agregar los parámetros dinámicos a la propiedadParams
utilizando unDictionary<string, object="">
de la siguiente manera:Utilizando este enfoque, podemos asignar parámetros dinámicos en
Appsettings.json
sin problemas.Cuando leemos la configuración utilizando
IConfiguration
, obtendremos la propiedadParams
como unDictionary<string, object="">
que podemos utilizar para extraer los parámetros dinámicos.El código anterior imprimirá la siguiente salida:
Por lo tanto, utilizando un
Dictionary<string, object="">
en lugar del parámetrodynamic
, podemos asignar parámetros dinámicos al leer la configuración deAppsettings.json
.</string,></string,></string,></string,></string,></string,>