{"id":62,"date":"2023-04-01T23:25:05","date_gmt":"2023-04-01T23:25:05","guid":{"rendered":"https:\/\/www.w3computing.com\/articles\/?p=62"},"modified":"2023-08-23T16:22:35","modified_gmt":"2023-08-23T16:22:35","slug":"building-and-maintaining-scalable-apis-with-graphql-and-rest","status":"publish","type":"post","link":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/","title":{"rendered":"Building and Maintaining Scalable APIs with GraphQL and REST"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">APIs play a critical role in modern software development, allowing applications to communicate with each other and share data in a consistent manner. Two of the most popular technologies for building APIs are GraphQL and REST. Both have their advantages and can be combined effectively to create scalable and maintainable APIs. In this article, we will explore how to build and maintain scalable APIs using these technologies, and we&#8217;ll end by solving a complex problem using the best practices discussed throughout the article.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Part 1: Understanding REST and GraphQL<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">REST (Representational State Transfer)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">REST is a software architectural style that emphasizes a stateless, client-server model with a well-defined set of constraints. It has become the de facto standard for building APIs due to its simplicity and ease of use. Some of the key concepts in REST include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Resources<\/strong>: Represented by URLs, resources are the fundamental units of the REST architecture.<\/li>\n\n\n\n<li><strong>HTTP Verbs<\/strong>: Standard HTTP methods (GET, POST, PUT, DELETE) are used to perform CRUD operations on resources.<\/li>\n\n\n\n<li><strong>Stateless<\/strong>: Each request from the client to the server must contain all the information needed to understand and process the request.<\/li>\n\n\n\n<li><strong>Cacheable<\/strong>: Responses can be cached to improve performance and reduce server load.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">GraphQL<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL is a query language and runtime for APIs, developed by Facebook. It provides a more flexible and efficient way to request and manipulate data compared to REST. Some key features of GraphQL include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Single Endpoint<\/strong>: Unlike REST, which has multiple endpoints for each resource, GraphQL has a single endpoint to handle all requests.<\/li>\n\n\n\n<li><strong>Flexible Querying<\/strong>: Clients can request only the data they need, reducing payload size and improving performance.<\/li>\n\n\n\n<li><strong>Strongly Typed<\/strong>: GraphQL enforces strict typing, allowing for more predictable and robust APIs.<\/li>\n\n\n\n<li><strong>Real-time updates<\/strong>: With GraphQL subscriptions, clients can receive real-time updates from the server when data changes.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Part 2: Building Scalable APIs<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Designing the API<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When building an API, it&#8217;s crucial to have a clear understanding of the data model and the relationships between different entities. This involves identifying resources, defining endpoints, and specifying the supported operations. For REST, this means adhering to the principles of RESTful design, while for GraphQL, it involves defining a schema with types, queries, mutations, and subscriptions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pagination<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Both REST and GraphQL can support pagination to limit the number of records returned in a single response. In REST, this can be done using query parameters like <code>limit <\/code>and <code>offset<\/code>. GraphQL, on the other hand, supports cursor-based pagination using the <code>first<\/code>, <code>last<\/code>, <code>before<\/code>, and <code>after <\/code>arguments.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Caching<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Caching is essential to improve performance and reduce server load. In REST, responses can be cached using HTTP headers like &#8216;<code>Cache-Control<\/code>&#8216; and &#8216;<code>ETag<\/code>&#8216;. GraphQL, however, does not have built-in caching support, and you may need to implement custom caching strategies on the client-side or use a caching proxy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Rate Limiting<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Implementing rate limiting helps protect your API from excessive requests and potential abuse. For REST APIs, this can be done using HTTP headers like <code>X-RateLimit-Limit <\/code>and <code>X-RateLimit-Remaining<\/code>. For GraphQL, you can enforce rate limiting based on query complexity or specific operation types.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Part 3: Maintaining APIs<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Versioning<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">API versioning helps maintain backward compatibility as your API evolves. In REST, this can be done using URL versioning or HTTP header versioning. GraphQL does not require explicit versioning, as it supports additive changes and allows clients to request the data they need.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring and Logging<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Monitoring and logging help track the health and performance of your API. For both REST and GraphQL, you can implement logging and monitoring solutions that capture request and response data, error rates, and latency metrics. Popular monitoring tools include Elasticsearch, Logstash, and Kibana (ELK stack), Prometheus, and Grafana.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Documentation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Thorough and up-to-date documentation is essential for maintaining APIs. For REST, you can use tools like Swagger or OpenAPI to generate interactive documentation. GraphQL has introspection built-in, which allows clients to query the schema for information about types and fields. Tools like GraphiQL and GraphQL Playground can provide a user-friendly interface for exploring and testing your GraphQL API.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Testing<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Automated testing is crucial for maintaining the reliability and stability of your API. For both REST and GraphQL, you can implement unit tests, integration tests, and end-to-end tests using frameworks like Jest, Mocha, or Chai.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example Problem and Solution<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Problem<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consider a blogging platform that supports posts, authors, and comments. The platform has a high volume of traffic, and you need to optimize the API to minimize the number of requests and response payload size while maintaining flexibility and performance. The API must also support real-time updates for new comments on posts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Solution<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To address this complex problem, we can implement a hybrid API using both REST and GraphQL.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Use REST for simple and predictable CRUD operations:\n<ul class=\"wp-block-list\">\n<li>Define RESTful endpoints for managing posts, authors, and comments, using standard HTTP verbs.<\/li>\n\n\n\n<li>Implement pagination using query parameters like <code>limit <\/code>and <code>offset<\/code>.<\/li>\n\n\n\n<li>Cache responses using HTTP headers like <code>Cache-Control<\/code> and <code>ETag<\/code>.<\/li>\n\n\n\n<li>Enforce rate limiting using HTTP headers like <code>X-RateLimit-Limit<\/code> and <code>X-RateLimit-Remaining<\/code>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Use GraphQL for more complex and flexible querying:\n<ul class=\"wp-block-list\">\n<li>Define a GraphQL schema with types for Post, Author, and Comment, along with queries, mutations, and subscriptions.<\/li>\n\n\n\n<li>Implement cursor-based pagination for listing posts and comments.<\/li>\n\n\n\n<li>Use GraphQL&#8217;s real-time updates with subscriptions to notify clients of new comments on posts.<\/li>\n\n\n\n<li>Enforce rate limiting based on query complexity or operation types.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Combine REST and GraphQL:\n<ul class=\"wp-block-list\">\n<li>For clients that only require basic CRUD operations, use the RESTful endpoints to minimize response payload size and take advantage of built-in caching.<\/li>\n\n\n\n<li>For clients that need more complex and flexible querying, or real-time updates, use the GraphQL endpoint.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">By leveraging the strengths of both REST and GraphQL, this hybrid approach provides a scalable, maintainable, and efficient API for the blogging platform, catering to the varying needs of different clients and use cases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Building and maintaining scalable APIs is a critical aspect of modern software development. By understanding the strengths and weaknesses of REST and GraphQL, developers can effectively combine these technologies to create APIs that are robust, flexible, and performant. In this article, we have explored various best practices for building and maintaining APIs and demonstrated how to apply these practices to solve a complex problem. With the right tools and techniques, developers can create APIs that stand the test of time and scale gracefully with the needs of their applications.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>APIs play a critical role in modern software development, allowing applications to communicate with each other and share data in a consistent manner. Two of the most popular technologies for building APIs are GraphQL and REST. Both have their advantages and can be combined effectively to create scalable and maintainable APIs. In this article, we [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[10],"tags":[],"class_list":["post-62","post","type-post","status-publish","format-standard","category-general-programming","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Building and Maintaining Scalable APIs with GraphQL and REST<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building and Maintaining Scalable APIs with GraphQL and REST\" \/>\n<meta property=\"og:description\" content=\"APIs play a critical role in modern software development, allowing applications to communicate with each other and share data in a consistent manner. Two of the most popular technologies for building APIs are GraphQL and REST. Both have their advantages and can be combined effectively to create scalable and maintainable APIs. In this article, we [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-01T23:25:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-23T16:22:35+00:00\" \/>\n<meta name=\"author\" content=\"w3compadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"w3compadmin\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/building-and-maintaining-scalable-apis-with-graphql-and-rest\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/building-and-maintaining-scalable-apis-with-graphql-and-rest\\\/\"},\"author\":{\"name\":\"w3compadmin\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#\\\/schema\\\/person\\\/a550b3e20d78bb4f79b7c6b7b53f0561\"},\"headline\":\"Building and Maintaining Scalable APIs with GraphQL and REST\",\"datePublished\":\"2023-04-01T23:25:05+00:00\",\"dateModified\":\"2023-08-23T16:22:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/building-and-maintaining-scalable-apis-with-graphql-and-rest\\\/\"},\"wordCount\":1040,\"commentCount\":0,\"articleSection\":[\"General Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/building-and-maintaining-scalable-apis-with-graphql-and-rest\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/building-and-maintaining-scalable-apis-with-graphql-and-rest\\\/\",\"url\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/building-and-maintaining-scalable-apis-with-graphql-and-rest\\\/\",\"name\":\"Building and Maintaining Scalable APIs with GraphQL and REST\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#website\"},\"datePublished\":\"2023-04-01T23:25:05+00:00\",\"dateModified\":\"2023-08-23T16:22:35+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#\\\/schema\\\/person\\\/a550b3e20d78bb4f79b7c6b7b53f0561\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/building-and-maintaining-scalable-apis-with-graphql-and-rest\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/building-and-maintaining-scalable-apis-with-graphql-and-rest\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/building-and-maintaining-scalable-apis-with-graphql-and-rest\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Articles Home\",\"item\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"General Programming\",\"item\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/general-programming\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Building and Maintaining Scalable APIs with GraphQL and REST\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#website\",\"url\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/\",\"name\":\"Developer Articles Hub\",\"description\":\"\",\"alternateName\":\"Developer Articles\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#\\\/schema\\\/person\\\/a550b3e20d78bb4f79b7c6b7b53f0561\",\"name\":\"w3compadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/wp-content\\\/litespeed\\\/avatar\\\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266\",\"url\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/wp-content\\\/litespeed\\\/avatar\\\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266\",\"contentUrl\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/wp-content\\\/litespeed\\\/avatar\\\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266\",\"caption\":\"w3compadmin\"},\"sameAs\":[\"http:\\\/\\\/w3computing.com\\\/articles\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Building and Maintaining Scalable APIs with GraphQL and REST","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/","og_locale":"en_US","og_type":"article","og_title":"Building and Maintaining Scalable APIs with GraphQL and REST","og_description":"APIs play a critical role in modern software development, allowing applications to communicate with each other and share data in a consistent manner. Two of the most popular technologies for building APIs are GraphQL and REST. Both have their advantages and can be combined effectively to create scalable and maintainable APIs. In this article, we [&hellip;]","og_url":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/","article_published_time":"2023-04-01T23:25:05+00:00","article_modified_time":"2023-08-23T16:22:35+00:00","author":"w3compadmin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"w3compadmin"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/#article","isPartOf":{"@id":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/"},"author":{"name":"w3compadmin","@id":"https:\/\/www.w3computing.com\/articles\/#\/schema\/person\/a550b3e20d78bb4f79b7c6b7b53f0561"},"headline":"Building and Maintaining Scalable APIs with GraphQL and REST","datePublished":"2023-04-01T23:25:05+00:00","dateModified":"2023-08-23T16:22:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/"},"wordCount":1040,"commentCount":0,"articleSection":["General Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/","url":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/","name":"Building and Maintaining Scalable APIs with GraphQL and REST","isPartOf":{"@id":"https:\/\/www.w3computing.com\/articles\/#website"},"datePublished":"2023-04-01T23:25:05+00:00","dateModified":"2023-08-23T16:22:35+00:00","author":{"@id":"https:\/\/www.w3computing.com\/articles\/#\/schema\/person\/a550b3e20d78bb4f79b7c6b7b53f0561"},"breadcrumb":{"@id":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.w3computing.com\/articles\/building-and-maintaining-scalable-apis-with-graphql-and-rest\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Articles Home","item":"https:\/\/www.w3computing.com\/articles\/"},{"@type":"ListItem","position":2,"name":"General Programming","item":"https:\/\/www.w3computing.com\/articles\/general-programming\/"},{"@type":"ListItem","position":3,"name":"Building and Maintaining Scalable APIs with GraphQL and REST"}]},{"@type":"WebSite","@id":"https:\/\/www.w3computing.com\/articles\/#website","url":"https:\/\/www.w3computing.com\/articles\/","name":"Developer Articles Hub","description":"","alternateName":"Developer Articles","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.w3computing.com\/articles\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.w3computing.com\/articles\/#\/schema\/person\/a550b3e20d78bb4f79b7c6b7b53f0561","name":"w3compadmin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.w3computing.com\/articles\/wp-content\/litespeed\/avatar\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266","url":"https:\/\/www.w3computing.com\/articles\/wp-content\/litespeed\/avatar\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266","contentUrl":"https:\/\/www.w3computing.com\/articles\/wp-content\/litespeed\/avatar\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266","caption":"w3compadmin"},"sameAs":["http:\/\/w3computing.com\/articles"]}]}},"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":"w3compadmin","author_link":"https:\/\/www.w3computing.com\/articles\/author\/w3compadmin\/"},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts\/62","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":4,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts\/62\/revisions"}],"predecessor-version":[{"id":66,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts\/62\/revisions\/66"}],"wp:attachment":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/media?parent=62"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/categories?post=62"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/tags?post=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}