{"id":1890,"date":"2020-08-12T10:15:05","date_gmt":"2020-08-12T08:15:05","guid":{"rendered":"http:\/\/web.evertop.pl\/understanding-solid-principles-single-responsibility\/"},"modified":"2021-06-17T12:34:52","modified_gmt":"2021-06-17T10:34:52","slug":"understanding-solid-principles-single-responsibility","status":"publish","type":"post","link":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/","title":{"rendered":"SOLID: Single Responsibility Principle (SRP)"},"content":{"rendered":"<p>SOLID principles are regarded as one the best practices in programming. We hear about them all the time. Unfortunately, it seems to me that these rules are often misunderstood. I\u2019ll try to present them in the series of five articles, one article for each rule.<\/p>\n<h3>How has it all started?<\/h3>\n<p>The rules originated in the 80s of the twentieth century. As a whole they were collected by Robert C. Martin \u2013 a famous \u201cUncle Bob\u201d, an American software engineer, instructor, and best-selling author. He is most recognized for developing numerous software design principles and for being the founder of influential Agile Manifesto. Uncle Bob, if You read it by any chance, I\u2019d like to thank you for each sentence from your books, which were, and still are, very precious to me. I\u2019m constantly discovering how deep they are. At the beginning they were not called SOLID at all, it was one of the friends of Uncle Bob who suggested a different order so that a famous mnemonic acronym appeared. And, starting from 2004 these rules has been functioning under the smart name SOLID. They appeared in the context of object-oriented programming but can be referred to as any blocks of the code. Thanks to them our software should:<\/p>\n<ul>\n<li>Be flexible to changes,<\/li>\n<li>Be easy to understand,<\/li>\n<li>Enable to create components used in many various systems.<\/li>\n<\/ul>\n<h3>Definition of Single-responsibility principle<\/h3>\n<p>This rule, although at first sight seems to be the simplest of them all, appears to be worst understood. Many times, either while talking to the software engineers or while working over the project, or even in the course of recruitment process, when I ask to describe a chosen rule I can hear about the SRP that \u201cclass shall be responsible for one thing\u201d. I usually ask an auxiliary\/rescue question like how many public methods a class should have then. Almost always I hear \u201cone\u201d. This is not true. It\u2019s a circulating opinion. Even Uncle Bob admitted after some time that the name was not accurate. As an author I suggest that a class (module, code block, etc.) shall have only \u201cone reason for changes\u201d. How can it be understood? Let\u2019s look at the example.<\/p>\n<h3>Breaking the rule<\/h3>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-1822\" src=\"http:\/\/web.evertop.pl\/wp-content\/uploads\/2020\/09\/01-srp-solid.png\" alt=\"\" width=\"500\" height=\"418\" srcset=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/01-srp-solid.png 500w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/01-srp-solid-300x251.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n<p>Let\u2019s imagine a usual class with user data. There have been three roles of user-actors defined in the system:<\/p>\n<ul>\n<li>Human resources department \u2013 prepares work time reports,<\/li>\n<li>Payroll department \u2013 calculates salaries of employees,<\/li>\n<li>Administration department \u2013 introduces employees to the system and makes updates in case of any change.<\/li>\n<\/ul>\n<p>Both payroll and human resources departments use the method that calculates the number of working hours \u2013 RegularHour(). Let\u2019s assume that payroll department needs to change the method of calculating reported working hours in such a way that work during nights or weekends is double counted . Thanks to that it is possible to calculate the salary on the base of one rate. At the same time, HR department requires reported working hours to be calculated with a certain coefficient which will correct working time in such a way that a breakfast break or informal coffee breaks will be deducted from this reported working time. In the best version the method that calculates the number of working hours will contain a lot of conditions. In the worst version, while the second report is serviced, the changes introduced by the first one will be deleted.<\/p>\n<h3>Correcting the situation<\/h3>\n<p>The above example is not wrong because of several public methods, it is wrong because the reasons for changing EmployeeData class are overlapping. HR department or payroll department can demand changes that interact with each other. The easiest way to improve the code is to separate the class in such a way that functionality of each actor is contained in a separate class.<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-1823\" src=\"http:\/\/web.evertop.pl\/wp-content\/uploads\/2020\/09\/02-solid2.png\" alt=\"\" width=\"420\" height=\"270\" srcset=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/02-solid2.png 420w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/02-solid2-300x193.png 300w\" sizes=\"(max-width: 420px) 100vw, 420px\" \/><\/p>\n<p>Now, if any department will demand changes to be made they should not influence functionalities that are used by other departments. However, 3 new classes have appeared in a code. Each of them can be potentially modified but by one actor only. It must be remembered that an actor can be a group of users but these will be users that make the same tasks in the system. Otherwise, it can be said that each class has one stakeholder.<br \/>\nIt is possible that the change of each place in which the original version of a class was brought about will be troublesome and will require a huge amount of time. In such a situation it is worth to use the facade pattern.<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-1824\" src=\"http:\/\/web.evertop.pl\/wp-content\/uploads\/2020\/09\/03-solid3.png\" alt=\"\" width=\"670\" height=\"270\" srcset=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/03-solid3.png 670w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/03-solid3-300x121.png 300w\" sizes=\"(max-width: 670px) 100vw, 670px\" \/><\/p>\n<h3>Examples of other applications<\/h3>\n<p>The rule can be applied in reference to other structures of the code. And so, as an example, form user that collects contact data of an employee and client, despite the fact that it enables to introduce the same data it has different reasons for changes. It is worth mentioning, after the author of these rules, that another rule \u2013 DRY, is not violated when we have the code that looks the same but realizes a separate business tasks that have other reasons for changes.<\/p>\n<h3>About the software architecture in brief<\/h3>\n<p>Looking at SRP in a bit wider context allows to undertake proper designing methods. Let\u2019s see how the application architecture that is built from API on a server and Angular application on Frontend, consequently maintained for all layers of application, could look like.<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-1825\" src=\"http:\/\/web.evertop.pl\/wp-content\/uploads\/2020\/09\/04-solid4.png\" alt=\"\" width=\"211\" height=\"334\" srcset=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/04-solid4.png 211w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/04-solid4-190x300.png 190w\" sizes=\"(max-width: 211px) 100vw, 211px\" \/><\/p>\n<p>It is not difficult to imagine that in each component (class) there will occur sequences of conditions \u201cif\u201d that define specific behaviors for each actor. Such an architecture will cause problems with every change. Situation can be improved by using SRP in each layer.<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-1826\" src=\"http:\/\/web.evertop.pl\/wp-content\/uploads\/2020\/09\/05-solid5.png\" alt=\"\" width=\"490\" height=\"467\" srcset=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/05-solid5.png 490w, https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/05-solid5-300x286.png 300w\" sizes=\"(max-width: 490px) 100vw, 490px\" \/><\/p>\n<p>Such an architecture will be surely more legible, easier to maintain and more resistant to changes. Additionally, such an application will be easier to scale or shape into microservices.<\/p>\n<h3>Summary<\/h3>\n<p>Using SRP does not necessarily mean that our class should have one public method and do one thing only. It should only has one reason for a change\u201d. Thanks to it changes that will appear will not lead into situation when one change overlaps another. It is worth adding that the rule can be applied both in reference to the class and to the component, module or library. Thanks to SRP not only our classes will be better but also the whole architecture of our applications. I hope, my dear reader, that when we meet again you won\u2019t tell me that the class shall do one thing only.<\/p>\n<p>&nbsp;<\/p>\n<p>Other SOLID principles:<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-interface-segregation\/\">Interface Segregation<\/a><br \/>\n<a href=\"http:\/\/web.evertop.pl\/understanding-solid-principles-dependency-inversion\/\">Dependency Inversion<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>SOLID principles are regarded as one the best practices in programming. We hear about them all the time. Unfortunately, it seems to me that these rules are often misunderstood. I\u2019ll try to present them in the series of five articles, one article for each rule. How has it all started? The rules originated in the [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":1821,"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: Single Responsibility Principle (SRP) - 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-single-responsibility\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SOLID: Single Responsibility Principle (SRP) - Evertop\" \/>\n<meta property=\"og:description\" content=\"SOLID principles are regarded as one the best practices in programming. We hear about them all the time. Unfortunately, it seems to me that these rules are often misunderstood. I\u2019ll try to present them in the series of five articles, one article for each rule. How has it all started? The rules originated in the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/\" \/>\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-08-12T08:15:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-17T10:34:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/pexels-startup-stock-photos-7103-scaled-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1514\" \/>\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=\"5 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-single-responsibility\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/pexels-startup-stock-photos-7103-scaled-1.jpg\",\"contentUrl\":\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/pexels-startup-stock-photos-7103-scaled-1.jpg\",\"width\":2560,\"height\":1514},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#webpage\",\"url\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/\",\"name\":\"SOLID: Single Responsibility Principle (SRP) - Evertop\",\"isPartOf\":{\"@id\":\"https:\/\/www.evertop.pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#primaryimage\"},\"datePublished\":\"2020-08-12T08:15:05+00:00\",\"dateModified\":\"2021-06-17T10:34:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\\u0142\\u00f3wna\",\"item\":\"https:\/\/www.evertop.pl\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SOLID: Single Responsibility Principle (SRP)\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.evertop.pl\/#\/schema\/person\/67da6133f965ef4876b54ed5cd0509ed\"},\"headline\":\"SOLID: Single Responsibility Principle (SRP)\",\"datePublished\":\"2020-08-12T08:15:05+00:00\",\"dateModified\":\"2021-06-17T10:34:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#webpage\"},\"wordCount\":1086,\"publisher\":{\"@id\":\"https:\/\/www.evertop.pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/pexels-startup-stock-photos-7103-scaled-1.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: Single Responsibility Principle (SRP) - 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-single-responsibility\/","og_locale":"en_US","og_type":"article","og_title":"SOLID: Single Responsibility Principle (SRP) - Evertop","og_description":"SOLID principles are regarded as one the best practices in programming. We hear about them all the time. Unfortunately, it seems to me that these rules are often misunderstood. I\u2019ll try to present them in the series of five articles, one article for each rule. How has it all started? The rules originated in the [&hellip;]","og_url":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/","og_site_name":"Evertop","article_publisher":"https:\/\/www.facebook.com\/EvertopPoland\/","article_published_time":"2020-08-12T08:15:05+00:00","article_modified_time":"2021-06-17T10:34:52+00:00","og_image":[{"width":2560,"height":1514,"url":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/pexels-startup-stock-photos-7103-scaled-1.jpg","path":"\/home\/evertop\/web-evertop\/wp-content\/uploads\/2020\/09\/pexels-startup-stock-photos-7103-scaled-1.jpg","size":"full","id":1821,"alt":"","pixels":3875840,"type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"Pawe\u0142 Szymura","Est. reading time":"5 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-single-responsibility\/#primaryimage","inLanguage":"en-US","url":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/pexels-startup-stock-photos-7103-scaled-1.jpg","contentUrl":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/pexels-startup-stock-photos-7103-scaled-1.jpg","width":2560,"height":1514},{"@type":"WebPage","@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#webpage","url":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/","name":"SOLID: Single Responsibility Principle (SRP) - Evertop","isPartOf":{"@id":"https:\/\/www.evertop.pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#primaryimage"},"datePublished":"2020-08-12T08:15:05+00:00","dateModified":"2021-06-17T10:34:52+00:00","breadcrumb":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/www.evertop.pl\/en\/"},{"@type":"ListItem","position":2,"name":"SOLID: Single Responsibility Principle (SRP)"}]},{"@type":"Article","@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#article","isPartOf":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#webpage"},"author":{"@id":"https:\/\/www.evertop.pl\/#\/schema\/person\/67da6133f965ef4876b54ed5cd0509ed"},"headline":"SOLID: Single Responsibility Principle (SRP)","datePublished":"2020-08-12T08:15:05+00:00","dateModified":"2021-06-17T10:34:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#webpage"},"wordCount":1086,"publisher":{"@id":"https:\/\/www.evertop.pl\/#organization"},"image":{"@id":"https:\/\/www.evertop.pl\/en\/understanding-solid-principles-single-responsibility\/#primaryimage"},"thumbnailUrl":"https:\/\/www.evertop.pl\/wp-content\/uploads\/2020\/09\/pexels-startup-stock-photos-7103-scaled-1.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\/1890"}],"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=1890"}],"version-history":[{"count":7,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/posts\/1890\/revisions"}],"predecessor-version":[{"id":4755,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/posts\/1890\/revisions\/4755"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/media\/1821"}],"wp:attachment":[{"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/media?parent=1890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/categories?post=1890"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.evertop.pl\/en\/wp-json\/wp\/v2\/tags?post=1890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}