{"id":22346090,"url":"https://github.com/benjaminabt/2018-talks-modernapidevelopment","last_synced_at":"2025-07-30T03:32:34.633Z","repository":{"id":130534412,"uuid":"155441240","full_name":"BenjaminAbt/2018-Talks-ModernApiDevelopment","owner":"BenjaminAbt","description":null,"archived":false,"fork":false,"pushed_at":"2019-06-12T14:51:14.000Z","size":51,"stargazers_count":17,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T01:06:19.586Z","etag":null,"topics":["aspnet-core","graphql","httpapi","json-api","net-core-2","swagger","webapi"],"latest_commit_sha":null,"homepage":null,"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/BenjaminAbt.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":"2018-10-30T19:03:55.000Z","updated_at":"2023-02-26T15:45:48.000Z","dependencies_parsed_at":"2023-03-21T19:36:08.275Z","dependency_job_id":null,"html_url":"https://github.com/BenjaminAbt/2018-Talks-ModernApiDevelopment","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BenjaminAbt/2018-Talks-ModernApiDevelopment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BenjaminAbt%2F2018-Talks-ModernApiDevelopment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BenjaminAbt%2F2018-Talks-ModernApiDevelopment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BenjaminAbt%2F2018-Talks-ModernApiDevelopment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BenjaminAbt%2F2018-Talks-ModernApiDevelopment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BenjaminAbt","download_url":"https://codeload.github.com/BenjaminAbt/2018-Talks-ModernApiDevelopment/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BenjaminAbt%2F2018-Talks-ModernApiDevelopment/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267803984,"owners_count":24146527,"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","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aspnet-core","graphql","httpapi","json-api","net-core-2","swagger","webapi"],"created_at":"2024-12-04T09:19:50.318Z","updated_at":"2025-07-30T03:32:34.625Z","avatar_url":"https://github.com/BenjaminAbt.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Modern API Development\n\nThis sample code is used for my talk about the evolution and modern APIs of Json and ASP.NET Core.\nAdditional there is a sample about GraphQL.\n\n## Projects \n\n### Common\n\nThis library contains demo resources: Authors and Books\nAlso there is an \"engine\" based in MediatR to show how to decouple Queries and Commands in modern architectures.\nThis project is used in every sample as hard reference.\n\n### Simple Json\n\nShow how to deliver Json.\nIn this case business models are returned like some Microsoft samples and the documentation shows.\nThe problem: if you return business models you expose maybe too much and you lose flexibility.\n\n### Json SDK\n\nThe SDK shows how deliver isolated API models like you work in WPF with ViewModels.\nIt's a way to decouple business models from API models to gain flexibility.\n\n### Swagger\n\nCompared to SOAP or OData Json by default delivers no schema about your API, your calls and contents.\nSwagger is an official way to describe your API.\n\nThe project contains both \"big\" packages for ASP.NET Core: NSwag and Swashbuckle.\n\n### OData\n\nShows the latest implementation of OData for ASP.NET Core.\n\n### GraphQL\n\nShow as sample of GraphQL engine with ASP.NET Core\nSample queries:\n\n```\n## Books\n\n{\n  books{\n    name,\n    price\n  }\n}\n\n## Authors\n\n{\n  author(id: \"##guid of user##\"){\n    id,\n    firstName,\n    lastName\n  }\n}\n```\n\n## Hints\n\nObviously there is a bug in the ASP.NET Core Modelbinder\nSee: https://github.com/aspnet/Mvc/issues/8636\n\n## License\n\n```\nCopyright (c) 2018\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n## Links\n\n| Name | Link |\n|-|-|\n| ASP.NET Core ModelBinder | https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/custom-model-binding?view=aspnetcore-2.1#custom-model-binder-sample |\n| MediatR | https://github.com/jbogard/MediatR |\n| GraphQL Learn | https://graphql.org/learn/ |\n| REST APIs | https://restfulapi.net/ |\n| REST PUT vs POST | https://restfulapi.net/rest-put-vs-post/ |\n| REST HATEOAS | https://restfulapi.net/hateoas/ |\n| Glory REST (Richardson Maturity Model) | https://martinfowler.com/articles/richardsonMaturityModel.html |\n| Traefik | https://traefik.io/ |\n| Azure API Management | https://azure.microsoft.com/en-us/services/api-management/ |\n| AWS API Gateway | https://aws.amazon.com/de/api-gateway/ |\n| Token-based Auth Sample | https://github.com/BenjaminAbt/Samples.AspNetCore-IdentityServer4 |\n| IdentityServer Community Samples | http://docs.identityserver.io/en/release/quickstarts/community.html |\n| Refit automatic REST | https://github.com/reactiveui/refit |\n\n## Extensions and Tools I recommend to use\n\n- [FiraCode](https://github.com/tonsky/FiraCode)\n- [viasfora](https://viasfora.com/)\n- [OzCode](https://www.oz-code.com/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenjaminabt%2F2018-talks-modernapidevelopment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenjaminabt%2F2018-talks-modernapidevelopment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenjaminabt%2F2018-talks-modernapidevelopment/lists"}