using System.Net.Http.Json; using Front.Program.Models; namespace Front.Program.Services; public class APIService { private readonly HttpClient _http; public APIService(HttpClient http) { _http = http; } private string ChangeToString(T data) { if (data == null) return string.Empty; var properties = typeof(T).GetProperties(); var value = properties.Select(p => $"{p.Name}={p.GetValue(data)}"); return string.Join("&", value); } public async Task?> GetJsonAsync(string url, TRequest value) { string parameter = ChangeToString(value); var response = await _http.GetFromJsonAsync>($"{url}?{parameter}"); return response; } } /* dynamic 타입을 사용하면: 타입 안전성이 떨어집니다 컴파일 타임에 오류를 잡을 수 없습니다 런타임에 예상치 못한 오류가 발생할 수 있습니다 현재 Register.razor.cs에서 JsonElement를 사용하는 방식이 더 안전할 수 있습니다. 왜냐하면: JSON 응답의 구조를 명시적으로 확인할 수 있습니다 (TryGetProperty 사용) 각 속성의 타입을 명확하게 처리할 수 있습니다 예상치 못한 데이터 구조에 대해 더 안전하게 대응할 수 있습니다 */