Pobieranie kursu dolara

0

Cześć, próbuję zrobić w celach własnej nauki prostą aplikację w WPF (jeden button i textblock) i zaimplementować API NBP do pobierania aktualnego kursu (bez żadnych wykresów tylko aktualny kurs dolara).
Chciałbym poznać podstawowe zasady implementacji API w C# i docelowo użyć tej możliwości w innym programie.
Mam utworzony w WPFie prosty program, bo tylko button (Pobierz dane) i okienko do wyświetlania aktualnego kursu.
Na stronie NBP http://api.nbp.pl/ znalazłem przygotowane API do użycia.

Aktualnie obowiązujący kurs waluty {code} z tabeli kursów typu {table}
http://api.nbp.pl/api/exchangerates/rates/{table}/{code}/

ewentualnie

Aktualnie obowiązująca cena złota
http://api.nbp.pl/api/cenyzlota

Czy mogę prosić o wskazówki w jaki sposób zaimplementować API NBP?

Dodam, że na GitHubie znalazłem również kilka przykładów implementacji API NBP ale są to rozbudowane programiki i trudno mi zrozumieć poszczególne powiązania.

Mogę udostępnić link do GitHuba ewentualnie wkleić tutaj kod nad którym pracuje. Na tą chwilę mam kod API ze strony NBP i WPFa i zastanawiam się jak połączyć API z kodem C# .

0

Proponuje zacząć od początku - zrozumieć czym jest API, asynchroniczność, JSON, skorzystać z biblioteki RestSharp, lub innej do odpytywania API. Operować na obiektach klas, nie parsować JSONa ręcznie.

Przykładowy url do odpytania wyglądałby http://api.nbp.pl/api/exchangerates/rates/A/EUR/

PS.
Nie pytać o kolor podświetlenia guzików 😒

0

@AdamWox dziękuję za zainteresowanie się moim tematem ale twoja odpowiedz nie pomogła mi za bardzo.
Wiem czym jest API, json jak i xml również. Jednak co innego coś wiedzieć, a co innego umieć to zastosować w praktyce i z stąd moje pytanie.

Szukałem i nigdzie nie znalazłem instrukcji krok po kroku jak taką implementację wprowadzić. Takie to jest skomplikowane ???

Mam prosty przykład button okienko tekstowe i proste API, nikt nie może na forum programistycznym tego wytłumaczyć, co zrobić?

0

Szukałem i nigdzie nie znalazłem instrukcji krok po kroku jak taką implementację wprowadzić. Takie to jest skomplikowane ???

Ja tobie zwyczajnie nie wierze w to co piszesz. Co to znaczy? Tego jest pełno w necie, są książki.

próbuję zrobić w celach własnej nauki prostą aplikację w WPF

No to mam ci to napisać, czy chcesz się czegoś nauczyć? Masz już coś? Nie działa? Wrzuć kod, treści błędów to pomożemy, ale nie napiszemy tego za ciebie.

0

@AdamWox: twoje odpowiedzi nic nie wnoszą do tematu za wyjątkiem ostatniego zdania "Wrzuć kod, treści błędów to pomożemy, ale nie napiszemy tego za ciebie."

2
using System;
using System.Threading.Tasks;
using System.Net.Http;
using Newtonsoft.Json;
using System.Collections.Generic;
					
public class Program
{
	public static async Task Main()
	{
		var httpClient = new HttpClient()
		{
			BaseAddress = new Uri("http://api.nbp.pl/api/")
		};
		var response = await httpClient.GetAsync("exchangerates/rates/A/USD");
		var content = await response.Content.ReadAsStringAsync();
		var rate = JsonConvert.DeserializeObject<TableRow>(content);
		Console.Write(rate.Rates[0].Mid);
	}
	
	public class TableRow
	{
		public List<Rate> Rates {get;set;}
	}
	
	public class Rate
	{
		public decimal Mid {get;set;}
	}
}

Integracja z API zawsze wygląda tak samo - patrzysz jakie metody oferuje, na to co Cię interesuje, sprawdzasz jak odpowiada i mapujesz wyniki. To czy użyjesz do tego HttpClient czy RestSharp, to czy będziesz używał System.Text.Json czy Newtonsoft, to czy będziesz mapował do klas czy szukał wartości bezpośrednio w JSON ma mniejsze znaczenie.

1
AdamWox napisał(a):

Proponuje zacząć od początku - zrozumieć czym jest API, asynchroniczność, JSON, skorzystać z biblioteki RestSharp, lub innej do odpytywania API. Operować na obiektach klas, nie parsować JSONa ręcznie.

Dokładnie

Ted07 napisał(a):

@AdamWox dziękuję za zainteresowanie się moim tematem ale twoja odpowiedz nie pomogła mi za bardzo.
Wiem czym jest API, json jak i xml również. Jednak co innego coś wiedzieć, a co innego umieć to zastosować w praktyce i z stąd moje pytanie.

Szukałem i nigdzie nie znalazłem instrukcji krok po kroku jak taką implementację wprowadzić. Takie to jest skomplikowane ???

Mam prosty przykład button okienko tekstowe i proste API, nikt nie może na forum programistycznym tego wytłumaczyć, co zrobić?

Dopóki nie zaczniesz oddzielać zagadnień, to nawet nie zaczałeś programować.
Button nie ma nic wspólnego z pobieraniem.

Najbardziej edukacyjne będzie pobieranie z programu konsolowego.
Jak opanujesz ćwiczenia (przykładów są tony), robisz tego klasę utility, testy,
I dopiero wtedy wracamy do WPF, ale tylko żeby z buttona wywołać jedną metodę - i znów metodę nie obchodzi, że jest wołana z WPF, a buttona WPF nie obchodzi co wywołuje.

Ted07 napisał(a):

... i zastanawiam się jak połączyć API z kodem C# .

No właśnie

Coś istotnego pominąłeś w rozwoju.
Zawsze sa takie sytuacje, że programista, nawet bardzo dobry, w jakimś puncie czasoprzestzreni czegoś nie wie (douczy się, spróbuje, i bedzie wiedział)

Widzę w twoich postach, że analiza cierpi, niestety to sie albo ma w umyśle, albo nie ma, i tysiace CtrC-CtrlV tego nie nauczą
Bez jasnego A -> B -> B -> C nie wyjdziesz z przedszkola

1
Ted07 napisał(a):

@AdamWox: twoje odpowiedzi nic nie wnoszą do tematu za wyjątkiem ostatniego zdania "Wrzuć kod, treści błędów to pomożemy, ale nie napiszemy tego za ciebie."

@Saalin: napisał za Ciebie cały kod, @AdamWox chciał Cię nakierować na rozwiązanie, bo w robocie nie będziesz miał podane wszystko na tacy. Będąc ambitnym miałbyś pretensje do @Saalin niż do @AdamWox

1

Przesadzacie. Problem to pojawi się w momencie, gdy @Ted07 wbije na forum, żeby pytać o integrację z innym endpointem albo innym API. Wiem, że tendencja na forum jest taka, żeby na proste pytania odpowiadać zawile, ale my tu nie rozmawiamy o pisaniu całej aplikacji tylko o wysłaniu pojedynczego requestu.

0

@AdamWox: @ZrobieDobrze jesteście w dużym błędzie myśląc, że jak mi pomożecie wyjść z jakiegoś problemu to już będę pytał o każdą linijkę kodu.
Wielkie dzięki @Saalin za dużą odwagę i wyłamanie się i chęć prawdziwej pomocy (bo widzę po komentarzach, że ta decyzja nie była łatwa).

I tak informacyjnie.
Na podstawie odpowiedzi Saalin udało mi się już samemu inne API skutecznie zaimplementować i rozbudować program. Wreszcie ruszyłem z tematem i mam jakiś punkt odniesienia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1