Tengo una vista de MVC donde estoy usando la API externa de Yandex para la búsqueda de direcciones.
Este es el script que debo agregar para usar los servicios de Yandex.
<script src="https://api-maps.yandex.ru/2.1/?apikey=xxxxxxxxxx&lang=ru_RU" type="text/javascript">¿Hay alguna manera de leer este script src desde el backend en lugar de usarlo directamente en la Vista, ya que contiene la clave de API?
Puede usar un método del lado del servidor para 'leer' el archivo src del script del servidor ASP.Net. Realizaría un HTTP GET usando algo como System.Net.Http.HttpClient . Esto es efectivo si está recuperando datos JSON o algún otro tipo de datos para procesar en el servidor.
Sin embargo, el backend de C# no procesaría las instrucciones de JavaScript. Para eso, necesitaría un motor de JavaScript del lado del servidor, como Node, o el navegador web del cliente.
Incluir el archivo JavaScript en la Vista permitirá que el motor JavaScript del cliente maneje el procesamiento. Pero como ha implicado, nada en la Vista está oculto para el cliente.
Puede crear una Acción que cargue y devuelva el script, luego haga referencia a esa Acción en su html, por ejemplo:
<script src='@Url.Action("LoadYandex")'>y
public ActionResult LoadYandex() { // HttpClient to get the file return Content(file, "text/javascript"); }Edite un ejemplo de acción más detallado, básico "obtener archivo del servidor y devolver contenido". Busque respuestas SO más detalladas para incluir la verificación de errores, etc.
public async Task<ActionResult> LoadYandex() { var url = "https://api-maps.yandex.ru/2.1/?apikey=xxxxxxxxxx&lang=ru_RU"; var httpClient = new HttpClient(); var response = await httpClient.GetAsync(url); var contents = await response.Content.ReadAsStringAsync(); return Content(contents, "text/javascript"); }