{"id":1900,"date":"2020-09-16T10:36:34","date_gmt":"2020-09-16T08:36:34","guid":{"rendered":"http:\/\/web.evertop.pl\/understanding-solid-principles-interface-segregation\/"},"modified":"2021-06-17T12:51:28","modified_gmt":"2021-06-17T10:51:28","slug":"understanding-solid-principles-interface-segregation","status":"publish","type":"post","link":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/","title":{"rendered":"SOLID: Interface Segregation Principle (ISP)"},"content":{"rendered":"<p>Have you ever seen a class method in your project, the core of which would be one line only: throw new NotImplementedException()?<br \/>\nIs this the right solution? Could such a code cause an issue?<\/p>\n<h3>Not Implemented Exception<\/h3>\n<p>Amongst all the rules SOLID ISP is the easiest one. However, even that rule is often being infringed. The above method helps to create good interfaces. This means \u2013 interfaces which define the contract to so many coherent functions that there is no chance the class occurs, which implements only part of the contract. Let\u2019s take a look at a simple example of the interface for geometric figures.<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-4459 size-large\" src=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-11-1024x640.jpg\" alt=\"class ISP\" width=\"640\" height=\"400\" srcset=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-11-1024x640.jpg 1024w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-11-300x187.jpg 300w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-11-768x480.jpg 768w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-11-1536x960.jpg 1536w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-11-2048x1280.jpg 2048w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Does the Circle need to have the HowManySides method?NoImplementedException?<br \/>\nSuch a solution is always incorrect. The above exception should only suggest that there is still a method to be implemented. It is not to indicate that a specific object doesn\u2019t have the functionality described by the interface. In this simple example the setup of the interfaces is presented in the picture below:<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-4458 size-large\" src=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-10-1024x640.jpg\" alt=\"class ISP v2\" width=\"640\" height=\"400\" srcset=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-10-1024x640.jpg 1024w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-10-300x187.jpg 300w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-10-768x480.jpg 768w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-10-1536x960.jpg 1536w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/grafiki_blog_4_Obszar-roboczy-1-kopia-10-2048x1280.jpg 2048w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>When creating the interfaces we should always consider them to be a certain definition of functionality, which will be provided by the implementing classes. This functionality (the only one), according to SRP, can be divided into several public methods. However, they should define one fixed indivisible combination. ICollection&lt;T&gt; from the .NET environment is a good example here, it has \u2018111\u2019 methods. It classifies the object as a collection providing it fulfills certain rules:<\/p>\n<ul>\n<li>Inserting the element<\/li>\n<li>Removing the element<\/li>\n<li>Voiding the collection<\/li>\n<li>Copying<\/li>\n<li>Verification of the element in the collection<\/li>\n<li>Summary of the elements in the collection<\/li>\n<li>Verification whether the collection is read-only<\/li>\n<\/ul>\n<p>It is difficult to think of a collection, that doesn\u2019t have one of the above functions. It is much easier to imagine a figure that has a surface area, perimeter, but doesn\u2019t have a specified number of sides.<\/p>\n<h3>How many methods?<\/h3>\n<p>As the software developers we are straightforward people, therefore we need the precise guidelines regarding how many methods a good interface should have? 1?2? 4?8?16? Or many more? In most cases it would be around 2 to the 2nd power. It is worth mentioning that the most relevant interfaces, for instance in the .NET environment such as:<\/p>\n<ul>\n<li>IComparable<\/li>\n<li>IEnumerable<\/li>\n<li>IDisposable<\/li>\n<li>IComparable<\/li>\n<li>ICloneable<\/li>\n<\/ul>\n<p>Consist of one method only. Their value is very high though, due to the high volume of functionality of the classes they are provided by.<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-4461 size-large\" src=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/computer-genius-work-1-1-1024x683.jpg\" alt=\"Serious pensive experienced male programmer typing code on computer while working on new software application in modern comfortable office\" width=\"640\" height=\"427\" srcset=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/computer-genius-work-1-1-1024x683.jpg 1024w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/computer-genius-work-1-1-300x200.jpg 300w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/computer-genius-work-1-1-768x513.jpg 768w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/computer-genius-work-1-1.jpg 1299w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<h3>Architecture and ISP<\/h3>\n<p>The incorrectly programmed interfaces, especially in the distributed systems, may cause a lot of issues. When they use other rules, the SOLID code which we implement, will depend only on the abstraction, therefore the incorrectly defined interfaces may cause a serious damage. There will be libraries created, which, according to the contract, should provide specific functionalities. In fact, they will only discard the exceptions.<\/p>\n<h3>The summary<\/h3>\n<p>While creating every single interface, it is worth asking yourself whether it is not too large. It might be worth splitting it into smaller parts. Is there a risk of creating the object that will not be able to fulfill the whole contract? It is good to remember that the class may depend on many interfaces and it may consist of one method only whilst still being a correct interface.<\/p>\n<p>&nbsp;<\/p>\n<p>Other SOLID principles:<br \/>\n<a href=\"http:\/\/web.evertop.pl\/understanding-solid-principles-single-responsibility\/\">Single Responsibility<\/a><br \/>\n<a href=\"http:\/\/web.evertop.pl\/understanding-solid-principles-open-closed\/\">Open-Closed<\/a><br \/>\n<a href=\"http:\/\/web.evertop.pl\/understanding-solid-principles-liskov-substitution\/\">Liskov Substitution<\/a><br \/>\n<a href=\"http:\/\/web.evertop.pl\/understanding-solid-principles-dependency-inversion\/\">Dependency Inversion<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Have you ever seen a class method in your project, the core of which would be one line only: throw new NotImplementedException()? Is this the right solution? Could such a code cause an issue? Not Implemented Exception Amongst all the rules SOLID ISP is the easiest one. However, even that rule is often being infringed. [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":4447,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[13],"tags":[20,21,22],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SOLID: Interface Segregation Principle (ISP) - Evertop<\/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.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SOLID: Interface Segregation Principle (ISP) - Evertop\" \/>\n<meta property=\"og:description\" content=\"Have you ever seen a class method in your project, the core of which would be one line only: throw new NotImplementedException()? Is this the right solution? Could such a code cause an issue? Not Implemented Exception Amongst all the rules SOLID ISP is the easiest one. However, even that rule is often being infringed. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/\" \/>\n<meta property=\"og:site_name\" content=\"Evertop\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/EvertopPoland\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-16T08:36:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-17T10:51:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/10\/grafiki_blog_4_Obszar-roboczy-1-kopia-8-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1600\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pawe\u0142 Szymura\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.evertop.pl\/#organization\",\"name\":\"Evertop\",\"url\":\"https:\/\/www.evertop.pl\/\",\"sameAs\":[\"https:\/\/www.facebook.com\/EvertopPoland\/\",\"https:\/\/www.linkedin.com\/company\/evertop-software-development\/\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.evertop.pl\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2021\/04\/logo_new.png\",\"contentUrl\":\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2021\/04\/logo_new.png\",\"width\":582,\"height\":114,\"caption\":\"Evertop\"},\"image\":{\"@id\":\"https:\/\/www.evertop.pl\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.evertop.pl\/#website\",\"url\":\"https:\/\/www.evertop.pl\/\",\"name\":\"Evertop\",\"description\":\"we code the future\",\"publisher\":{\"@id\":\"https:\/\/www.evertop.pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.evertop.pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/10\/grafiki_blog_4_Obszar-roboczy-1-kopia-8-scaled.jpg\",\"contentUrl\":\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/10\/grafiki_blog_4_Obszar-roboczy-1-kopia-8-scaled.jpg\",\"width\":2560,\"height\":1600},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#webpage\",\"url\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/\",\"name\":\"SOLID: Interface Segregation Principle (ISP) - Evertop\",\"isPartOf\":{\"@id\":\"https:\/\/www.evertop.pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#primaryimage\"},\"datePublished\":\"2020-09-16T08:36:34+00:00\",\"dateModified\":\"2021-06-17T10:51:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\\u0142\\u00f3wna\",\"item\":\"https:\/\/www.evertop.pl\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SOLID: Interface Segregation Principle (ISP)\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.evertop.pl\/#\/schema\/person\/67da6133f965ef4876b54ed5cd0509ed\"},\"headline\":\"SOLID: Interface Segregation Principle (ISP)\",\"datePublished\":\"2020-09-16T08:36:34+00:00\",\"dateModified\":\"2021-06-17T10:51:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#webpage\"},\"wordCount\":556,\"publisher\":{\"@id\":\"https:\/\/www.evertop.pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/10\/grafiki_blog_4_Obszar-roboczy-1-kopia-8-scaled.jpg\",\"keywords\":[\"programming tips\",\"self development\",\"SOLID\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.evertop.pl\/#\/schema\/person\/67da6133f965ef4876b54ed5cd0509ed\",\"name\":\"Pawe\\u0142 Szymura\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.evertop.pl\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3c1282144fed3331a59535f2439a6db1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3c1282144fed3331a59535f2439a6db1?s=96&d=mm&r=g\",\"caption\":\"Pawe\\u0142 Szymura\"},\"url\":\"https:\/\/www.evertop.pl\/en\/author\/pszymura\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SOLID: Interface Segregation Principle (ISP) - Evertop","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.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/","og_locale":"en_US","og_type":"article","og_title":"SOLID: Interface Segregation Principle (ISP) - Evertop","og_description":"Have you ever seen a class method in your project, the core of which would be one line only: throw new NotImplementedException()? Is this the right solution? Could such a code cause an issue? Not Implemented Exception Amongst all the rules SOLID ISP is the easiest one. However, even that rule is often being infringed. [&hellip;]","og_url":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/","og_site_name":"Evertop","article_publisher":"https:\/\/www.facebook.com\/EvertopPoland\/","article_published_time":"2020-09-16T08:36:34+00:00","article_modified_time":"2021-06-17T10:51:28+00:00","og_image":[{"width":2560,"height":1600,"url":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/10\/grafiki_blog_4_Obszar-roboczy-1-kopia-8-scaled.jpg","path":"\/home\/evertop\/web-evertop\/wp-content\/uploads\/2020\/10\/grafiki_blog_4_Obszar-roboczy-1-kopia-8-scaled.jpg","size":"full","id":4447,"alt":"","pixels":4096000,"type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"Pawe\u0142 Szymura","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.evertop.pl\/#organization","name":"Evertop","url":"https:\/\/www.evertop.pl\/","sameAs":["https:\/\/www.facebook.com\/EvertopPoland\/","https:\/\/www.linkedin.com\/company\/evertop-software-development\/"],"logo":{"@type":"ImageObject","@id":"https:\/\/www.evertop.pl\/#logo","inLanguage":"en-US","url":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2021\/04\/logo_new.png","contentUrl":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2021\/04\/logo_new.png","width":582,"height":114,"caption":"Evertop"},"image":{"@id":"https:\/\/www.evertop.pl\/#logo"}},{"@type":"WebSite","@id":"https:\/\/www.evertop.pl\/#website","url":"https:\/\/www.evertop.pl\/","name":"Evertop","description":"we code the future","publisher":{"@id":"https:\/\/www.evertop.pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.evertop.pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#primaryimage","inLanguage":"en-US","url":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/10\/grafiki_blog_4_Obszar-roboczy-1-kopia-8-scaled.jpg","contentUrl":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/10\/grafiki_blog_4_Obszar-roboczy-1-kopia-8-scaled.jpg","width":2560,"height":1600},{"@type":"WebPage","@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#webpage","url":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/","name":"SOLID: Interface Segregation Principle (ISP) - Evertop","isPartOf":{"@id":"https:\/\/www.evertop.pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#primaryimage"},"datePublished":"2020-09-16T08:36:34+00:00","dateModified":"2021-06-17T10:51:28+00:00","breadcrumb":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/www.evertop.pl\/en\/"},{"@type":"ListItem","position":2,"name":"SOLID: Interface Segregation Principle (ISP)"}]},{"@type":"Article","@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#article","isPartOf":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#webpage"},"author":{"@id":"https:\/\/www.evertop.pl\/#\/schema\/person\/67da6133f965ef4876b54ed5cd0509ed"},"headline":"SOLID: Interface Segregation Principle (ISP)","datePublished":"2020-09-16T08:36:34+00:00","dateModified":"2021-06-17T10:51:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#webpage"},"wordCount":556,"publisher":{"@id":"https:\/\/www.evertop.pl\/#organization"},"image":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-interface-segregation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/10\/grafiki_blog_4_Obszar-roboczy-1-kopia-8-scaled.jpg","keywords":["programming tips","self development","SOLID"],"articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.evertop.pl\/#\/schema\/person\/67da6133f965ef4876b54ed5cd0509ed","name":"Pawe\u0142 Szymura","image":{"@type":"ImageObject","@id":"https:\/\/www.evertop.pl\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/3c1282144fed3331a59535f2439a6db1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3c1282144fed3331a59535f2439a6db1?s=96&d=mm&r=g","caption":"Pawe\u0142 Szymura"},"url":"https:\/\/www.evertop.pl\/en\/author\/pszymura\/"}]}},"_links":{"self":[{"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/posts\/1900"}],"collection":[{"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/comments?post=1900"}],"version-history":[{"count":8,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/posts\/1900\/revisions"}],"predecessor-version":[{"id":4759,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/posts\/1900\/revisions\/4759"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/media\/4447"}],"wp:attachment":[{"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/media?parent=1900"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/categories?post=1900"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/tags?post=1900"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}