{"id":15349544,"url":"https://github.com/ravening/googlebookapigraphql","last_synced_at":"2026-02-25T23:06:01.030Z","repository":{"id":38751895,"uuid":"191397967","full_name":"ravening/GoogleBookApiGraphQL","owner":"ravening","description":"This is a spring boot and Angular 8 application to fetch the books by title  using the Google Books API service and parsing it using jackson.","archived":false,"fork":false,"pushed_at":"2023-02-28T21:51:17.000Z","size":16163,"stargazers_count":1,"open_issues_count":29,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-08T06:03:09.206Z","etag":null,"topics":["angular8","database","google-books-api","graphql","jackson-json-processor","java-8","json","material-design","maven","nodejs","rest-api"],"latest_commit_sha":null,"homepage":null,"language":"Java","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/ravening.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":"2019-06-11T15:16:46.000Z","updated_at":"2022-05-13T23:20:10.000Z","dependencies_parsed_at":"2024-10-16T01:50:33.962Z","dependency_job_id":null,"html_url":"https://github.com/ravening/GoogleBookApiGraphQL","commit_stats":{"total_commits":1,"total_committers":1,"mean_commits":1.0,"dds":0.0,"last_synced_commit":"36a7122ec4e76b25e2501473299a4e70668918bb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ravening/GoogleBookApiGraphQL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravening%2FGoogleBookApiGraphQL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravening%2FGoogleBookApiGraphQL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravening%2FGoogleBookApiGraphQL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravening%2FGoogleBookApiGraphQL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ravening","download_url":"https://codeload.github.com/ravening/GoogleBookApiGraphQL/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravening%2FGoogleBookApiGraphQL/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29844845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T22:37:40.667Z","status":"ssl_error","status_checked_at":"2026-02-25T22:37:25.960Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["angular8","database","google-books-api","graphql","jackson-json-processor","java-8","json","material-design","maven","nodejs","rest-api"],"created_at":"2024-10-01T11:54:55.685Z","updated_at":"2026-02-25T23:06:01.001Z","avatar_url":"https://github.com/ravening.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Google Books using GraphQL\n\nThis is a spring boot and Angular 8 application to fetch the books by title \nusing the Google Books API service.\n\nThere are two ways of fetching the Google Books\n```$xslt\n1. Using the standard google books api\n2. Using the GraphQL service to fetch sub parts of the book\n```\n\nIn the first part, I use the standard Google books API to fetch all the books\n\nby title provided by user. The JSON response is directly mapped to a\n\nJAVA object. No additional parsing is needed. Once all the books are fetched,\n\nthe details are displayed on the UI.\n\n----\n\n###### GraphQL\n In the second part also we use the Google Books API service but instead of mapping\n \n entire JSON response to JAVA object, we use jackson library to parse the JSON\n \n response to create a custom Book object. After that using the GraphQL schema\n \n we return specific details of the book which user has mentioned in the books.graphql file\n \n ----\n The Important GraphQL schema is mentioned as below\n \n ```$xslt\nschema {\n  query: Query\n}\n\ntype Query{\n    booksByTitle(title: String): [Book]\n    book(id: String): Book\n}\n\ntype Book {\n    title: String\n    authors: String\n}\n```\n\nThis tells that we are doing \"Query\" for the \"Book\" type. There are two types of query here.\n\nOne is searching for books using the title which returns a list of book\n\nThe next query is searching the book using the id which returns just one Book.\n\nThe return data just contains \"title\" and the \"authors\" of the book and not all\n\nthe details returned by the API\n\nOf course you can include more details of you want under \"type Book\"\n\n---\nOn the other hand if you have a set of books already stored in the database or\n\ngetting it from another API, service then you can display all of them by mentioning\n\nbelow schema in the books.graphql file\n\n```\ntype Query {\n    allBooks: [Book]\n}\n```\n\nOnce that is done, you can fetch particular details by using the below content as the body for the POST request\n```$xslt\n{\n allBooks{\n title\n author\n publisher\n publishedDate\n }\n}\n```\n\nAlso note that you need to define a new DataFetcher endpoint for \"allBooks\" in\n\n```\nGraphQLService.java\n```\nand provide implementation for that endpoint under the \"datafetcher\" directory\n\n## Prerequisites\nThe project assumes that following packages are installed to before using it\n```\nJava 8, Maven, Angular 8(Important), nodejs, npm\n```\n\n## Installation of necessary packages\nInstall the latest version of nodejs, npm and angular\n\n```bash\nsudo npm cache clean -f\nsudo npm install -g n\nsudo n stable\nnpm i -g @angular/cli@8.0.1\n```\n\n## Steps to run the project\n\n1. Clone the git repo to your local directory\n\n2. cd to that directory and run the below command\n```bash\n./mvnw spring-boot:run\n```\nThis will install all the necessary dependencies for the backend\nand starts the application at http://localhost:8080\n\nBy default all the fetched books are stored in the h2 database and it can be accessed using\n\n[h2-console](http://localhost:8080/h2-console)\n\nThe database details are mentioned in application.properties file\n\n3.Now cd to \"client\" directory and run\n```bash\nnpm install\n```\nThis will install all the required node packages\n\n4.Start the frontend using\n```bash\nng serve\n```\nNow navigate to the link http://localhost:4200\n\nBy default the books will be searched using the GraphQL implementation.\n\n\n## Additional Info\nBelow are the commands used to create the frontend project\n```bash\nng new client --routing --style css --enable-ivy\nng add @angular/material\nng g s shared/book\nng g s shared/googlebook\nng g c allbooks\nng g c book\nng g c book-details\nng g c googlebooks\nng g c googlebook-details\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fravening%2Fgooglebookapigraphql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fravening%2Fgooglebookapigraphql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fravening%2Fgooglebookapigraphql/lists"}