{"id":26457926,"url":"https://github.com/vellt/network_helper_library","last_synced_at":"2025-03-18T23:53:20.773Z","repository":{"id":217695640,"uuid":"744562471","full_name":"vellt/Network_Helper_Library","owner":"vellt","description":"A NetworkHelper egy könyvtár, amely megkönnyíti a backend kommunikációt .NET Framework, C# projeketben.","archived":false,"fork":false,"pushed_at":"2024-09-10T19:50:49.000Z","size":6525,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-17T01:45:54.851Z","etag":null,"topics":["api-client","backend","http","http-client","networking","request","response","rest-api"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vellt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-17T14:56:02.000Z","updated_at":"2024-09-10T19:50:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"97a12683-d01c-4b0e-a30d-f503f9fc12d6","html_url":"https://github.com/vellt/Network_Helper_Library","commit_stats":null,"previous_names":["vellt/network_helper_library"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vellt%2FNetwork_Helper_Library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vellt%2FNetwork_Helper_Library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vellt%2FNetwork_Helper_Library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vellt%2FNetwork_Helper_Library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vellt","download_url":"https://codeload.github.com/vellt/Network_Helper_Library/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244326210,"owners_count":20435122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-client","backend","http","http-client","networking","request","response","rest-api"],"created_at":"2025-03-18T23:53:20.304Z","updated_at":"2025-03-18T23:53:20.756Z","avatar_url":"https://github.com/vellt.png","language":"C#","readme":"# NetworkHelper.dll\n\n- **A NetworkHelper** egy .NET Framework és C# projektekhez készült könyvtár, amely megkönnyíti a backend kommunikációt. A könyvtár egyszerűsíti az HTTP kérések küldését és a JSON válaszok feldolgozását.\n- **Verzió**: v0.1.3\n- **Támogatott .NET Verziók**: .NET Framework 4.7.2 vagy újabb\n\n### Első lépések\n\n- **Könyvtár (DLL) letöltése**:\n  \n  - Töltsd le a legújabb `NetworkHelper.dll` fájlt a [GitHub Releases](https://github.com/vellt/Network_helper_Library/releases) oldalról.\n\n- **DLL hozzáadása a projektedhez**:\n  \n  - Nyisd meg a Visual Studio-t és navigálj a **Solution Explorer** ablakhoz.\n  - Jobb klikk a **References** elemre, válaszd az **Add Reference** lehetőséget.\n  - A megjelenő ablakban kattints a **Browse...** gombra, és tallózd be a letöltött DLL fájlt.\n  - Ellenőrizd, hogy a DLL megjelent a **References** alatt.\n\n---\n\n### Backend Statikus Osztály Használata\n\nA **Backend** statikus osztály segítségével könnyedén létrehozhatsz és küldhetsz HTTP kéréseket.\n\n### Elérhető HTTP Metódusok\n\n| Metódus  | Leírás                | Példa Használat                       |\n| -------- | --------------------- | ------------------------------------- |\n| `GET`    | Adatok lekérése       | `Backend.GET(url).Send()`             |\n| `POST`   | Új adatok létrehozása | `Backend.POST(url).Body(body).Send()` |\n| `PUT`    | Adatok módosítása     | `Backend.PUT(url).Body(body).Send()`  |\n| `DELETE` | Adatok törlése        | `Backend.DELETE(url).Send()`          |\n\n---\n\n### `GET` Kérés Kiépítése\n\n```csharp\nstring url = \"http://localhost:3000/students\"; \nResponse response = Backend.GET(url).Send();\n```\n\n---\n\n### `POST` Kérés Kiépítése\n\nBody felhasználása opcionális. Amennyiben nem szeretnél a body-ban adatot utaztatni, nem kötelező meghívni.\n\n```csharp\nstring url = \"http://localhost:3000/students\"; \nStudent student = new Student \n{ \n    phone = \"12132\", \n    name = \"Sanyi\", \n    email = \"email\" \n}; \nResponse response = Backend.POST(url).Body(student).Send();\n```\n\n---\n\n### `PUT` Kérés Kiépítése\n\n**Body-val történő Azonosítás**\n\nA body felhasználása opcionális: ha nincs szükséged adatok küldésére, a body-t kihagyhatod.\n\n```csharp\nstring url = \"http://localhost:3000/students\"; \nStudent student = new Student \n{ \n    id = 11, \n    name = \"Bela\" \n}; \nResponse response = Backend.PUT(url).Body(student).Send();\n```\n\n\u003e Anonim típussal (new { id = 11, name = \"Bela\" }) is dolgozhatunk adatküldéskor. A lényeg, hogy tartalmazza a szükséges tulajdonságokat (pl id, name):\n\u003e `Backend.PUT(url).Body(new { id = 11, name = \"Bela\"}).Send();`\n\n**URL Paraméteres Azonosítás**\n\nA body felhasználása opcionális: ha nincs szükséged adatok küldésére, a body-t kihagyhatod.\n\n```csharp\nstring url = \"http://localhost:3000/students/11\"; \nStudent student = new Student { name = \"Bela\" }; \nResponse response = Backend.PUT(url).Body(student).Send();\n```\n\n---\n\n### `DELETE` Kérés Kiépítése\n\n**Body-val történő Azonosítás**\n\nA body felhasználása opcionális: ha nincs szükséged adatok küldésére, a body-t kihagyhatod.\n\n```csharp\nstring url = \"http://localhost:3000/students\"; \nResponse response = Backend.DELETE(url)\n                           .Body(new Student { id = 11 })\n                           .Send();\n```\n\n\u003e Anonim típussal (new { id = 11 }) is dolgozhatunk, azonosítás céljából. A lényeg, hogy tartalmazza a szükséges tulajdonságot (pl id):\n\u003e `Backend.DELETE(url).Body(new { id = 11 }).Send();`\n\n**URL Paraméteres Azonosítás**\n\nAz azonosítót az URL tartalmazza, nem szükséges a body láncolat.\n\n```csharp\nstring url = \"http://localhost:3000/students/11\"; \nResponse response = Backend.DELETE(url).Send();\n```\n\n---\n\n### `Teljes` adatkinyerés a `Response`-ból\n\nDeszerializálja a kiválasztott JSON adatot a megadott típusra.\n\n**Server response:**\n```json\n[\n    {\n        \"id\": 1,\n        \"nev\": \"Kiss Péter\",\n        \"osztaly\": \"9.A\",\n        \"szuletesi_datum\": \"2007-05-12\"\n    },\n    {\n        \"id\": 2,\n        \"nev\": \"Nagy Anna\",\n        \"osztaly\": \"10.B\",\n        \"szuletesi_datum\": \"2006-08-23\"\n    }\n]\n```\n\n**`As\u003cT\u003e` Metódus:**\n\n```csharp\nList\u003cStudent\u003e students = Backend.GET(url).Send().As\u003cList\u003cStudent\u003e\u003e();\n```\n\n---\n\n### `Részleges` adatkinyerés a `Response`-ból\n\nEzen metódusok segítik a komplex responseból való részleges adatfeldolgozást.\n\n**Komplex server response:**\n\n```json\n{\n    \"message\": \"Dolgozó sikeresen lekérve.\",\n    \"status\": \"success\",\n    \"data\": {\n        \"Az\": 1,\n        \"Nev\": \"Nagy József\",\n        \"Telepules\": \"Szolnok\"\n    }\n}\n```\n\n**`ValueAt` + `As\u003cT\u003e` Metódus:** A `ValueAt` kiválaszt egy JSON értéket az adott **index** alapján. \n\n```csharp\nResponse response = Backend.GET(url).Send();\nstring uzenet= response.ValueAt(0).As\u003cstring\u003e();\nstring status= response.ValueAt(1).As\u003cstring\u003e();\nDolgozo dolgozo= response.ValueAt(2).As\u003cDolgozo\u003e();\n```\n\n**`ValueOf` + `As\u003cT\u003e` Metódus:** A `ValueOf` kiválaszt egy JSON értéket a megadott **név** alapján.\n\n```csharp\nResponse response = Backend.GET(url).Send();\nstring uzenet= response.ValueOf(\"message\").As\u003cstring\u003e();\nstring status= response.ValueOf(\"status\").As\u003cstring\u003e();\nDolgozo dolgozo= response.ValueOf(\"data\").As\u003cDolgozo\u003e();\n```\n\n---\n\n### `ValueAt`- és `ValueOf`-ok egymásba ágyazása\n\nEzen metódusok egymásba ágyazása segíti a komplex responseból a mélyebb szintű részleges adatfeldolgozást. Akár kombinálhatjuk is őket (`ValueAt`-ra `ValueOf` vagy fordítva). Ezáltal csökkenteni tudjuk a deszerializálandó adatmennyiséget, így **erőforrást szabadíthatunk fel** projektünkben.\n\n**Komplex server response:**\n\n```json\n{\n    \"message\": \"Dolgozó sikeresen lekérve.\",\n    \"status\": \"success\",\n    \"data\": {\n        \"Az\": 1,\n        \"Nev\": \"Nagy József\",\n        \"Telepules\": \"Szolnok\"\n    }\n}\n```\n\n**A `Nev` érték kinyerése a `ValueAt`-al** \n\n```csharp\nstring nev = Backend.GET(link).Send()\n                .ValueAt(2)\n                .ValueAt(1)\n                .As\u003cstring\u003e();\n```\n\n**A `Nev` érték kinyerése a `ValueOf`-al** \n\n```csharp\nstring nev = Backend.GET(link).Send()\n                .ValueOf(\"data\")\n                .ValueOf(\"Nev\")\n                .As\u003cstring\u003e();\n```\n\n**A `Nev` érték kinyerése a `ValueAt` és `ValueOf`-al** \n\n```csharp\nstring nev = Backend.GET(link).Send()\n                .ValueAt(2)\n                .ValueOf(\"Nev\")\n                .As\u003cstring\u003e();\n```\n\n---\n\n### Fájlfeltöltés\n\n```csharp\nBackend.UPLOAD(url).File(filePath).Send();\n```\n\n**Szerver válasz formátuma**: sikeres feltöltéskor visszatér a fájl nevével, a data tulajdonságba helyezve.\n```json\n{\n    \"message\": \"Fájl sikeresen feltöltve.\",\n    \"status\": \"success\",\n    \"data\": \"3126503.png\"\n}\n```\n\n**Fájl feltöltése, válasz megjelenítése**\n\nFájl útvonálának kiválasztásához érdemes a OpenFileDialog-ot használni WPF esetében. A kódrészletben kiválasztom a képet, és útvonalát eltárolom a filePath változóban.\n\n```csharp\nOpenFileDialog openFileDialog = new OpenFileDialog\n{\n    Filter = \"Image Files (*.png;*.jpg;*.jpeg)|*.png;*.jpg;*.jpeg|All Files (*.*)|*.*\"\n};\n\nif (openFileDialog.ShowDialog() == true)\n{\n    string filePath = openFileDialog.FileName;\n\n    string url = \"http://localhost:3000/upload\";\n    Response response = Backend.UPLOAD(url).File(filePath).Send();\n\n    // megjelenítem a válaszüzenetet\n    MessageBox.Show(response.ValueOf(\"message\").As\u003cstring\u003e());\n}\n```\n\n---\n\n### Forráskód\n\nA teljes forráskód elérhető itt: [Backend.cs](https://github.com/vellt/Network_Helper_Library/blob/master/NetworkHelper/Backend.cs)\n\n---\n\n### Könyvtár szerkezete\n\n\u003cimg width=\"878\" alt=\"ClassDiagram1\" src=\"https://github.com/user-attachments/assets/537d101e-9878-4cfe-97d7-571af40beee8\"\u003e\n\n---\n\nEz a dokumentáció biztosítja, hogy a NetworkHelper könyvtár használata egyszerű és érthető legyen. Ha bármilyen kérdésed van, vagy további segítségre van szükséged, ne habozz kapcsolatba lépni velem a [GitHub Issues](https://github.com/vellt/Network_helper_Library/issues) oldalon.\n\n---\n\n# [‼️ Mintaprojektért Kattints Ide ‼️](https://github.com/vellt/mintaprojekt_networkhelper)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvellt%2Fnetwork_helper_library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvellt%2Fnetwork_helper_library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvellt%2Fnetwork_helper_library/lists"}