Как это должно вести себя: Я должен получать ответы от API карт Google. Дело в том, что я получаю ошибку 404; >
Обычный вызов API из URL-адреса в API с ключом API работает, но код на C# выдает Not Found по тем же запросам из кода. Пожалуйста, ребята, не будьте слишком строгими, — говорят Gemini и GPT. что все в порядке.
Это код одного из моих сервисов в моем приложении микросервисов. Пытался отладить :пользуюсь логированием, но не получилось, логирование ничего не показывает, также пробовал ставить код в GPT, но он не дает адекватных ответов
Что еще странно, так это я делаю даже не получаю логи с помощью _logger
using System.Threading.Tasks;
using DestinationService.Services;
using Microsoft.AspNetCore.Mvc;
using DestinationService.Models;
using System.Collections.Generic;
using System;
using DestinationService.Data;
namespace DestinationService.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class DestinationsController : ControllerBase
{
private readonly DestinationSearchService _searchService;
private readonly AppDbContext _db;
private readonly GoogleMapsService _maps;
public DestinationsController(DestinationSearchService searchService, AppDbContext db, GoogleMapsService maps)
{
_searchService = searchService;
_db = db;
_maps = maps;
}
[HttpGet]
public async Task GetDestinations(
[FromQuery] string query,
[FromQuery] string? location,
[FromQuery] decimal? minCost,
[FromQuery] decimal? maxCost,
[FromQuery] string? activities)
{
var results = await _searchService.SearchDestinations(query, location, minCost, maxCost, activities);
return Ok(results);
}
[HttpPost]
public async Task AddDestination(
[FromBody] Destination destination)
{
if (!string.IsNullOrEmpty(destination.GooglePlaceId))
{
var placeDetails = await _maps.GetPlaceDetails(destination.GooglePlaceId);
destination.PlaceDetails = placeDetails;
}
_maps.DoSomething();
_db.Destinations.Add(destination);
await _db.SaveChangesAsync();
await _searchService.IndexDestination(destination);
return CreatedAtAction(nameof(AddDestination), destination);
}
[HttpGet("search-nearby")]
public async Task SearchNearby(
[FromQuery] string location,
[FromQuery] int radius,
[FromQuery] string? keyword)
{
var results = await _maps.SearchNearby(location, radius, keyword);
return Ok(results);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using DestinationService.Models;
using Nest;
using Elasticsearch.Net;
using Newtonsoft.Json;
using Microsoft.Extensions.Logging.Console;
namespace DestinationService.Services
{
public class GoogleMapsService
{
private readonly string _apiKey;
private readonly ILogger _logger;
public GoogleMapsService(IConfiguration configuration, ILogger logger)
{
_apiKey = configuration["GoogleMaps:ApiKey"];
_logger = logger;
}
public async Task GetPlaceDetails(string query)
{
var client = new HttpClient();
// First, search for the place using the query
var searchResponse = await client.GetAsync(
$"https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input={Uri.EscapeDataString(query)}&inputtype=textquery&fields=place_id&key={_apiKey}"
);
searchResponse.EnsureSuccessStatusCode();
var searchContent = await searchResponse.Content.ReadAsStringAsync();
// Parse the response to extract the place_id
var searchResult = JsonConvert.DeserializeObject(searchContent);
if (searchResult.Candidates == null || !searchResult.Candidates.Any())
{
throw new Exception("No matching places found for the given query.");
}
var placeId = searchResult.Candidates.First().PlaceId;
// Now, retrieve the place details using the place_id
var detailsResponse = await client.GetAsync(
$"https://maps.googleapis.com/maps/api/place/details/json?place_id={placeId}&key={_apiKey}"
);
detailsResponse.EnsureSuccessStatusCode();
return await detailsResponse.Content.ReadAsStringAsync();
}
public async Task SearchNearby(string location, int radius, string keyword = "")
{
var client = new HttpClient();
_logger.LogInformation($"{client}");
var url = $"https://maps.googleapis.com/maps/api/place/nearbysearch/json?location={location}&radius={radius}&key={_apiKey}";
if (!string.IsNullOrEmpty(keyword))
url += $"&keyword={Uri.EscapeDataString(keyword)}";
_logger.LogInformation($"{url}");
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
public void DoSomething()
{
_logger.LogInformation("This is a log message.");
}
}
[b]Как это должно вести себя:[/b] Я должен получать ответы от API карт Google. [b]Дело в том, что я получаю ошибку 404;[/b] > Обычный вызов API из URL-адреса в API с ключом API работает, но код на C# выдает Not Found по тем же запросам из кода. [b]Пожалуйста, ребята, не будьте слишком строгими, — говорят Gemini и GPT. что все в порядке.[/b] Это код одного из моих сервисов в моем приложении микросервисов. [b]Пытался отладить :[/b]пользуюсь логированием, но не получилось, логирование ничего не показывает, также пробовал ставить код в GPT, но он не дает адекватных ответов Что еще странно, так это я делаю даже не получаю логи с помощью _logger [code] using System.Threading.Tasks; using DestinationService.Services; using Microsoft.AspNetCore.Mvc; using DestinationService.Models; using System.Collections.Generic; using System; using DestinationService.Data;
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DestinationService.Models; using Nest; using Elasticsearch.Net; using Newtonsoft.Json; using Microsoft.Extensions.Logging.Console;
namespace DestinationService.Services { public class GoogleMapsService { private readonly string _apiKey; private readonly ILogger _logger;
public async Task GetPlaceDetails(string query) { var client = new HttpClient();
// First, search for the place using the query var searchResponse = await client.GetAsync( $"https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input={Uri.EscapeDataString(query)}&inputtype=textquery&fields=place_id&key={_apiKey}" );
searchResponse.EnsureSuccessStatusCode(); var searchContent = await searchResponse.Content.ReadAsStringAsync();
// Parse the response to extract the place_id var searchResult = JsonConvert.DeserializeObject(searchContent); if (searchResult.Candidates == null || !searchResult.Candidates.Any()) { throw new Exception("No matching places found for the given query."); }
var placeId = searchResult.Candidates.First().PlaceId;
// Now, retrieve the place details using the place_id var detailsResponse = await client.GetAsync( $"https://maps.googleapis.com/maps/api/place/details/json?place_id={placeId}&key={_apiKey}" );
public async Task SearchNearby(string location, int radius, string keyword = "") { var client = new HttpClient(); _logger.LogInformation($"{client}"); var url = $"https://maps.googleapis.com/maps/api/place/nearbysearch/json?location={location}&radius={radius}&key={_apiKey}";
if (!string.IsNullOrEmpty(keyword)) url += $"&keyword={Uri.EscapeDataString(keyword)}"; _logger.LogInformation($"{url}"); var response = await client.GetAsync(url);
Обычный вызов API из URL-адреса в API с ключом API работает, но код на C# выдает Not Found по тем же запросам из кода.
Пожалуйста, ребята, не поймите слишком строго, Gemini и GPT говорят, что все в порядке.
Это код одного из моих сервисов в моем...
Шлюз API не осуществляет маршрутизацию к службе и выдает ошибку 404 «не найдено» при переводе приложения в режим отладки. Кажется, что uri, который он не может разрешить, если задан lb://EST-INVENTORY-ORDER-SERVICE
Я попробовал все возможные...
Я использую .NET 8. Я хочу реализовать и сгенерировать JWT для защиты маршрутов и разрешить доступ к маршрутам только для ролей. Проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, какой токен генерируется, всякий раз,...
Последние два дня я застрял в странной ситуации. У меня есть установка Drupal в корневом каталоге моего документа /var/www/html с именем drupal, и я получаю к ней доступ по URL-адресу « Он открывается нормально. В settings.php каталога...