<?xml version="1.0" encoding="UTF-8"?><rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>APIs Archives - Francesco Lelli %</title> <atom:link href="https://francescolelli.info/tag/apis/feed/" rel="self" type="application/rss+xml" /><link>https://francescolelli.info/tag/apis/</link> <description>Information Management, Computer Science,  Economics, Finance and more</description> <lastBuildDate>Mon, 20 Nov 2023 17:49:10 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod> hourly </sy:updatePeriod> <sy:updateFrequency> 1 </sy:updateFrequency> <generator>https://wordpress.org/?v=6.8.5</generator><image> <url>https://francescolelli.info/wp-content/uploads/2018/11/cropped-InstrumentElement-32x32.jpg</url><title>APIs Archives - Francesco Lelli %</title><link>https://francescolelli.info/tag/apis/</link> <width>32</width> <height>32</height> </image> <site
xmlns="com-wordpress:feed-additions:1">156264324</site> <item><title>Service Oriented Architecture (SOA) Design Principle: Coupling, Cohesion, and Granularity</title><link>https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/</link> <comments>https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Mon, 20 Nov 2023 17:49:02 +0000</pubDate> <category><![CDATA[Java]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Python]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[API]]></category> <category><![CDATA[APIs]]></category> <category><![CDATA[Cohesion]]></category> <category><![CDATA[computer science]]></category> <category><![CDATA[Coupling]]></category> <category><![CDATA[Design Patterns]]></category> <category><![CDATA[Granularity]]></category> <category><![CDATA[Service Oriented Architecture]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[software architecture]]></category> <category><![CDATA[software engineering]]></category> <category><![CDATA[Software Patterns]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2526</guid><description><![CDATA[<p>In the realm of Service Oriented Architecture (SOA) design principles, the concepts of Service Coupling, Service Cohesion, and Service Granularity play pivotal roles in shaping a robust and effective architectural framework. Service Coupling refers to the degree of interdependence between any two business processes. In the context of SOA, weak coupling is highly preferred as [&#8230;]</p><p>The post <a
href="https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/">Service Oriented Architecture (SOA) Design Principle: Coupling, Cohesion, and Granularity</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>In the realm of Service Oriented Architecture (SOA) design principles, the concepts of Service Coupling, Service Cohesion, and Service Granularity play pivotal roles in shaping a robust and effective architectural framework. Service Coupling refers to the degree of interdependence between any two business processes. In the context of SOA, weak coupling is highly preferred as it signifies a lower level of dependency between services, allowing for greater flexibility, scalability, and maintainability. On the other hand, Service Cohesion pertains to the degree of functional relatedness and focus of operations within a service. In SOA, strong cohesion is the desired state, emphasizing that a service should encapsulate a well-defined and closely related set of functionalities. Lastly, Service Granularity addresses the scope of functionality exposed by a service, with a preference for coarse granularity. This implies that services should provide broader, more encompassing functionalities to address the specific needs at hand, promoting reusability and minimizing the number of service invocations. Adhering to these principles ensures the creation of a service-oriented architecture that is agile, modular, and aligned with the overarching goals of the enterprise.</p><p>In short Coupling, Cohesion and Granularity are part of SOA Design Principle and they can be summarized as follows:</p><ul
class="wp-block-list"><li><strong>Service Coupling:</strong><ul
class="wp-block-list"><li><em>Definition:</em> Refers to the degree of interdependence between two business processes.</li><li><em>Preferable State:</em> Weak coupling is favored in SOA, indicating lower dependency for increased flexibility and maintainability.</li></ul></li><li><strong>Service Cohesion:</strong><ul
class="wp-block-list"><li><em>Definition:</em> Represents the degree of functional relatedness and focus of operations within a service.</li><li><em>Preferable State:</em> Strong cohesion is preferred in SOA, indicating that a service should encapsulate closely related and well-defined functionalities.</li></ul></li><li><strong>Service Granularity:</strong><ul
class="wp-block-list"><li><em>Definition:</em> Denotes the scope of functionality exposed by a service.</li><li><em>Preferable State:</em> Coarse granularity is recommended in SOA, suggesting that services should provide broad functionalities to address specific needs, promoting reusability.</li></ul></li></ul><figure
class="wp-block-image size-full"><img
fetchpriority="high" decoding="async" width="867" height="1300" data-attachment-id="2528" data-permalink="https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/attachment/pexels-photo-8470810/" data-orig-file="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810.jpeg" data-orig-size="867,1300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;Photo by Thirdman on &lt;a href=\&quot;https:\/\/www.pexels.com\/photo\/blueprints-and-a-laptop-8470810\/\&quot; rel=\&quot;nofollow\&quot;&gt;Pexels.com&lt;\/a&gt;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;blueprints and a laptop&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="pexels-photo-8470810" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-200x300.jpeg" data-large-file="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-683x1024.jpeg" src="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810.jpeg?8011c3&amp;8011c3" alt="Service Oriented Architecture (SOA) Design Principle: Coupling, Cohesion, and Granularity. The blueprint of Software Architecture" class="wp-image-2528" srcset="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810.jpeg 867w, https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-200x300.jpeg 200w, https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-683x1024.jpeg 683w, https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-768x1152.jpeg 768w, https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-600x900.jpeg 600w" sizes="(max-width: 867px) 100vw, 867px" /></figure><h2 class="wp-block-heading">Service Coupling:</h2><p>Service Coupling is a critical design principle that examines the degree of interdependence between any two business processes or services within a system. It essentially evaluates how tightly or loosely these services are connected and the implications of changes in one on the others.</p><p>Characterized by the level of dependency, tight coupling signifies a strong interconnection where modifications in one service may necessitate corresponding changes in others. Conversely, weak coupling is the preferred state in SOA design. Weak coupling implies a lower level of dependency, allowing for greater flexibility, scalability, and ease of maintenance. Services with weak coupling can evolve independently, reducing the risk of unintended consequences when modifications or updates are made.</p><p>The benefits of weak coupling extend to the adaptability of the architecture to changes in business requirements. Services that are loosely coupled are more resilient to alterations, ensuring that adjustments in one part of the system do not propagate unexpectedly to other interconnected services.</p><p>For example, a service employing standardized interfaces and protocols can interact with other services more loosely, minimizing the impact of changes in one service on others. Achieving weak coupling often involves defining clear service interfaces, minimizing direct dependencies, and utilizing standards to facilitate interoperability between services. In essence, Service Coupling is a foundational principle in SOA design that promotes a modular, adaptable, and scalable architecture.</p><h2 class="wp-block-heading">Service Cohesion:</h2><p>Service Cohesion stands as a pivotal design principle governing the internal organization and functional relatedness within an individual service. It delves into the degree to which the operations encapsulated within a service are logically connected and focused on a specific set of functionalities.</p><p>Characterized by its emphasis on functional relatedness, strong cohesion is the ideal state for services in SOA. A service exhibiting strong cohesion encapsulates a well-defined and closely related set of functionalities, ensuring that its operations are united by a common purpose. This design approach enhances the service&#8217;s clarity, maintainability, and usability, as all contained functionalities contribute to a coherent and unified business capability.</p><p>In contrast, weak cohesion suggests a service with disparate functionalities that may not be logically connected, leading to a lack of clarity and potentially hindering the service&#8217;s effectiveness. Strong cohesion, on the other hand, facilitates a service&#8217;s reusability, as the encapsulated functionalities are designed to work together seamlessly, promoting a modular and extensible architecture.</p><p>For example, a service responsible for order processing should ideally encapsulate functionalities such as order validation, payment processing, and inventory management, exhibiting strong cohesion by focusing on a cohesive set of operations related to order fulfillment.</p><p>Achieving strong cohesion often involves careful analysis of the business processes and ensuring that the functionalities grouped within a service share a common context and purpose. This principle contributes to the creation of services that are not only well-defined and purposeful but also conducive to building a scalable and adaptable SOA.</p><h2 class="wp-block-heading">Service Granularity:</h2><p>The concept of Service Granularity plays a crucial role in defining the scope of functionality exposed by a service. It is essentially a measure of how broad or specific a set of functionalities needs to be in order to address a particular business need. The degree of granularity directly impacts the reusability, flexibility, and efficiency of the services within the architecture.</p><p>In SOA, the preferable state for Service Granularity is characterized by a tendency towards coarse granularity. Coarse-grained services encapsulate broader and more encompassing functionalities, capable of addressing significant business requirements in a single service invocation. This design approach promotes simplicity, reduces the number of service interactions, and facilitates easier maintenance.</p><p>Conversely, fine-grained services expose narrower sets of functionalities, potentially requiring multiple service invocations to fulfill a specific business operation. While fine granularity may seem intuitive for certain scenarios, it can lead to increased communication overhead and complexity, making the system more susceptible to performance issues and maintenance challenges.</p><p>For example, a coarse-grained service responsible for customer management might encompass functions such as creating, updating, and deleting customer profiles, providing a comprehensive set of functionalities within a single service interface.</p><p>Achieving the right level of granularity involves careful consideration of the business context and requirements. Coarse granularity is favored as it enhances the potential for service reuse, reduces the impact of changes on service interfaces, and aligns with the overarching goal of creating a modular and scalable architecture in SOA. Striking a balance between granularity and functionality is key to building an effective and adaptable service-oriented system.</p><hr
/><p><em>Unlock the power of Service Oriented Architecture (#SOA )! Learn how #service Coupling Cohesion, and Granularity influence flexibility and #scalability in your #System . #softwaredevelopment #programming #API</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Fsoftware-engineering%2Fservice-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity%2F&#038;text=Unlock%20the%20power%20of%20Service%20Oriented%20Architecture%20%28%23SOA%20%29%21%20Learn%20how%20%23service%20Coupling%20Cohesion%2C%20and%20Granularity%20influence%20flexibility%20and%20%23scalability%20in%20your%20%23System%20.%20%23softwaredevelopment%20%23programming%20%23API&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><h2 class="wp-block-heading">Service Oriented Architecture (SOA) Design Principle and Application Programming Interfaces (APIs)</h2><p>The concepts of Service Coupling, Service Cohesion, Service Granularity, and APIs (Application Programming Interfaces) are intricately related in the context of designing and implementing a Service Oriented Architecture (SOA) or any modular and scalable system. APIs act as the external interface for services, and their design choices have a direct impact on the level of coupling, the cohesion within services, and the granularity of functionalities exposed. A well-thought-out API strategy is crucial for realizing the principles of a modular, scalable, and adaptable Service Oriented Architecture.</p><p>APIs and SOA operate at different levels of abstraction and have distinct purposes within the realm of software architecture. The distinction in their level of abstraction is rooted in their design principles, scope, and intended use. APIs are considered more low-level than SOA because they provide detailed interfaces for developers to interact with specific functionalities, while SOA operates at a higher level, focusing on the overall organization and alignment of services within a system. APIs are tools that facilitate the implementation of SOA principles at a more granular level.</p><p>This specific article focus on SOA design principles; if you want to know more on <a
href="https://francescolelli.info/programming/how-to-design-a-good-api-advanced-object-oriented-programming/">how to design a good API you can find more information here</a>.</p><p></p><p>The post <a
href="https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/">Service Oriented Architecture (SOA) Design Principle: Coupling, Cohesion, and Granularity</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2526</post-id> </item> <item><title>On Building a Two Sided Marketplace</title><link>https://francescolelli.info/tutorial/on-building-a-two-sided-marketplace/</link> <comments>https://francescolelli.info/tutorial/on-building-a-two-sided-marketplace/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Wed, 27 Oct 2021 18:23:42 +0000</pubDate> <category><![CDATA[Tutorial]]></category> <category><![CDATA[API Economy]]></category> <category><![CDATA[APIs]]></category> <category><![CDATA[marketplace]]></category> <category><![CDATA[two sides marketplaces]]></category> <category><![CDATA[Web Services]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2335</guid><description><![CDATA[<p>Let&#8217;s start from the beginning: what is a two sided marketplace? Answer from Wikipedia: A two-sided market, also called a two-sided network, is an intermediary economic platform having two distinct user groups that provide each other with network benefits. In other words it is a marketplace (online or offline) where different kinds of people meet and exchange valuable tangible or [&#8230;]</p><p>The post <a
href="https://francescolelli.info/tutorial/on-building-a-two-sided-marketplace/">On Building a Two Sided Marketplace</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>Let&#8217;s start from the beginning: what is a two sided marketplace?</p><p>Answer from Wikipedia:</p><blockquote
class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>A <strong>two-sided market</strong>, also called a <strong>two-sided network</strong>, is an intermediary economic platform having two distinct user groups that provide each other with network benefits.</p></blockquote><p>In other words it is a marketplace (online or offline) where different kinds of people meet and exchange valuable tangible or intangible goods and services.</p><figure
class="wp-block-image"><img
decoding="async" width="1000" height="498" data-attachment-id="2336" data-permalink="https://francescolelli.info/tutorial/on-building-a-two-sided-marketplace/attachment/twosidedmarketplace/" data-orig-file="https://francescolelli.info/wp-content/uploads/2021/10/TwoSidedMarketplace.png" data-orig-size="1000,498" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TwoSidedMarketplace" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2021/10/TwoSidedMarketplace-300x149.png" data-large-file="https://francescolelli.info/wp-content/uploads/2021/10/TwoSidedMarketplace.png" src="https://francescolelli.info/wp-content/uploads/2021/10/TwoSidedMarketplace.png?8011c3&amp;8011c3" alt="Two Sided Marketplace " class="wp-image-2336" title="Two Sided Marketplace " srcset="https://francescolelli.info/wp-content/uploads/2021/10/TwoSidedMarketplace.png 1000w, https://francescolelli.info/wp-content/uploads/2021/10/TwoSidedMarketplace-300x149.png 300w, https://francescolelli.info/wp-content/uploads/2021/10/TwoSidedMarketplace-768x382.png 768w, https://francescolelli.info/wp-content/uploads/2021/10/TwoSidedMarketplace-600x299.png 600w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure><p>Examples of two side marketplaces are literally everywhere and include companies like:</p><ul
class="wp-block-list"><li>Facebook</li><li>Uber</li><li>AirBnB</li><li>Amazon</li><li>Booking.com</li></ul><p>and many more. These companies provide services that support and mediate the interconnection of groups of people in different manner.</p><p>Jeff Bezos gave a talk at MIT the 25th of November 2002 explaining some of the key characteristics of Amazon at that time. At the time, he was looking for new fresh graduates to join his ranks and explained some of features of these marketplaces that are still valid nowadays.</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="Jeff Bezos at MIT  Amazon - Earth&#039;s Most Customer-Centric Company" width="800" height="450" src="https://www.youtube.com/embed/J2xGBlT0cqY?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>Some key aspects of this talk include:</p><ul
class="wp-block-list"><li>you need to <strong><em>help customers to find products and products to find customers</em></strong>. Actually, the second part is more challenging than the first one.</li><li>How <strong><em>logistics is intertwined with computer science</em></strong> in several different ways</li><li>The <strong><em>system needs to works at scale</em></strong> since its inception</li><li><strong><em>Real time experiments</em></strong> with feedback loop as opposite of batch data mining of the data</li><li>Amazon Web Service was launched in 2001 with the key idea of providing an <strong><em>SDK and a solid API for external users </em></strong>in order to build customizable store fronts</li><li><strong><em>Amazon Web Services are connected to their affiliate program</em></strong> in order to give a percentage of the sales as commission (or referral fee) to their external developers</li></ul><p>The talk also provides a few examples of how developers were coming out with new ways of taking advantage of the internet that they did not expect nor plan. In addition, he explains how extreme customization and recommendation was (and still is) an important feature of the system.</p><p>Clearly, there is much more to say about building a two sided marketplace and how various technologies evolved since then. However, this is a good start as an <a
href="https://francescolelli.info/tutorial/the-api-economy-resources-for-programming-the-web/">introduction to the API Economy</a></p><p></p><p>The post <a
href="https://francescolelli.info/tutorial/on-building-a-two-sided-marketplace/">On Building a Two Sided Marketplace</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/tutorial/on-building-a-two-sided-marketplace/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2335</post-id> </item> <item><title>The API Economy: Resources for Programming the Web</title><link>https://francescolelli.info/tutorial/the-api-economy-resources-for-programming-the-web/</link> <comments>https://francescolelli.info/tutorial/the-api-economy-resources-for-programming-the-web/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Thu, 29 Oct 2020 20:50:28 +0000</pubDate> <category><![CDATA[Economics]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Tutorial]]></category> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[API]]></category> <category><![CDATA[API Economy]]></category> <category><![CDATA[APIs]]></category> <category><![CDATA[Design API]]></category> <category><![CDATA[REST]]></category> <category><![CDATA[SDK]]></category> <category><![CDATA[SOAP]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=1654</guid><description><![CDATA[<p>The API economy is an effective way to leverage the possibility of programming the Web. The definition of this practice is relatively simple: API Economy (sometimes known as API-driven economy) simply refers to the exchange of value between consumers and providers through APIs. An application programming interface (or API) is a computing interface which defines [&#8230;]</p><p>The post <a
href="https://francescolelli.info/tutorial/the-api-economy-resources-for-programming-the-web/">The API Economy: Resources for Programming the Web</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>The API economy is an effective way to leverage the possibility of programming the Web. The definition of this practice is relatively simple: API Economy (sometimes known as API-driven economy) simply refers to the exchange of value between consumers and providers through APIs.</p><p>An application programming interface (or <strong>API</strong>) is a computing interface which defines interactions between multiple software intermediaries. APIs in the web are literally everywhere and serve a never-ending and ever-growing set of purposes.</p><p>The plot below gives you an idea on the size of the economy and its estimated growth in the coming years. We should probably note that this estimate is pre-Covid. Therefore, I would not be surprised if the growth would be even greater.</p><figure
class="wp-block-image size-large"><img
decoding="async" width="629" height="335" data-attachment-id="2171" data-permalink="https://francescolelli.info/tutorial/the-api-economy-resources-for-programming-the-web/attachment/api-economy-programming-the-web/" data-orig-file="https://francescolelli.info/wp-content/uploads/2020/10/api-Economy-Programming-the-Web.jpg" data-orig-size="629,335" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="api-Economy-Programming-the-Web" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2020/10/api-Economy-Programming-the-Web-300x160.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2020/10/api-Economy-Programming-the-Web.jpg" src="https://francescolelli.info/wp-content/uploads/2020/10/api-Economy-Programming-the-Web.jpg?8011c3&amp;8011c3" alt="The API Economy and its market size: Resources for Programming the Web " class="wp-image-2171" srcset="https://francescolelli.info/wp-content/uploads/2020/10/api-Economy-Programming-the-Web.jpg 629w, https://francescolelli.info/wp-content/uploads/2020/10/api-Economy-Programming-the-Web-300x160.jpg 300w, https://francescolelli.info/wp-content/uploads/2020/10/api-Economy-Programming-the-Web-600x320.jpg 600w" sizes="(max-width: 629px) 100vw, 629px" /></figure><p>The big 4 as well as McKinsey are regularly monitoring the phenomena. Here you can see the point of view of <a
href="https://www2.deloitte.com/content/dam/Deloitte/us/Documents/financial-services/us-fsi-api-economy.pdf" target="_blank" rel="noreferrer noopener">Deloitte on the API Economy</a> in one of their recent whitepapers.</p><hr
/><p><em>The #API #Economy and its role for #programming the Web</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Ftutorial%2Fthe-api-economy-resources-for-programming-the-web%2F&#038;text=The%20%23API%20%23Economy%20and%20its%20role%20for%20%23programming%20the%20Web&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p>From a technical point of view, the communication leverages the fact that machines exchange messages via the Web usually using a REST or a SOAP approach.</p><h3 class="wp-block-heading">REST/SOAP and their role in programming the Web</h3><p>Representational state transfer (in short <strong><em>ReST</em></strong>) is a software architectural style that defines a set of constraints to be used for creating Web services. Web services that conform to the REST architectural style, called RESTful Web services, provide interoperability between computer systems on the Internet. It leverages the GET/PUT/POST/DELETE of the HTTP protocol for implementing the CRUD methods that are usually used in DBs such as:</p><ul
class="wp-block-list"><li><em>CREATE </em>procedures generate new records via <em>INSERT </em>statements.</li><li><em>READ </em>procedures reads the data based on input parameters. Similarly, <em>RETRIEVE </em>procedures grab records based on input parameters.</li><li><em>UPDATE </em>procedures modify records without overwriting them.</li><li><em>DELETE </em>procedures delete where specified.</li></ul><p><em><strong>SOAP </strong></em>(abbreviation for Simple Object Access Protocol) is more flexible and is just a messaging protocol specification for exchanging structured information. It is used in the context of implementing web services in <a
href="https://francescolelli.info/tutorial/introduction-to-computer-networks-and-how-internet-works/">computer networks</a>. Its purpose is to provide extensibility, neutrality, verbosity, and independence.</p><hr
/><p><em>#REST and #SOAP play an important role in #programming the web and the #API #Economy</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Ftutorial%2Fthe-api-economy-resources-for-programming-the-web%2F&#038;text=%23REST%20and%20%23SOAP%20play%20an%20important%20role%20in%20%23programming%20the%20web%20and%20the%20%23API%20%23Economy&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p>SOAP and REST are subject to a never-ending battle. Programmers and software architects tend to have a polarized view. I personally see them as two sides of the same coin. I will cover some of the aspects of the discussion in a future article. In this post, as I usually use SOAP in the lectures of SOE, I will use REST for describing how programming the web works.</p><h3 class="wp-block-heading">Programming the Web from a technical point of view</h3><p>This video summarizes the various concepts that rotate around REST as well as gives an example using data represented in JSON.</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="REST API concepts and examples" width="800" height="450" src="https://www.youtube.com/embed/7YcW25PHnAA?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>For a good API the protocol is only the beginning and there is always need for a SDK. They practically go in tandem. A software development kit (or <strong><em>SDK </em></strong>in short) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, a debugger and perhaps a software framework. They are normally specific to a hardware platform and operating system combination. In other words, they are a set tools that make the adoption of a protocol easy.</p><p>This video explains how an API and a SDK complement each other:</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="API vs. SDK: What&#039;s the difference?" width="800" height="450" src="https://www.youtube.com/embed/kG-fLp9BTRo?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><hr
/><p><em>the role of #SDK in #designing a good web #API and fostering protocol adoptions</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Ftutorial%2Fthe-api-economy-resources-for-programming-the-web%2F&#038;text=the%20role%20of%20%23SDK%20in%20%23designing%20a%20good%20web%20%23API%20and%20fostering%20protocol%20adoptions&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><h3 class="wp-block-heading"><strong>Useful resources for navigating the API economy</strong></h3><p>Where can I find an API? You can start by searching in google &#8220;&lt;name of the company&gt; API&#8221; and you will be surprised by the astonishing amount of companies that are using this approach. However, in case you are shopping for ideas, this approach may be limiting the possibilities. A better alternative could be to familiarize with the API Economy using this set of videos from the ProgrammableWeb:</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="APIs 101: What Exactly is an API? Part 1" width="800" height="450" src="https://www.youtube.com/embed/cpRcK4GS068?list=PLcgRuP1JhcBP8Kh0MC53GH_pxqfOhTVLa" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>You could also browse catalogs that are available in the Internet, such as:</p><ul
class="wp-block-list"><li><a
href="https://any-api.com/">https://any-api.com/</a> Collection of APIs and tools for using them.</li><li><a
href="https://www.programmableweb.com/category/all/apis">https://www.programmableweb.com/category/all/apis</a> A &#8220;historical&#8221; initiative that intends to list all possible APIs that are available in the web.</li><li><a
href="https://apilist.fun/interviews ">https://apilist.fun/interviews</a> APIs can be also a fun endeavor!</li></ul><hr
/><p><em>Useful #resources for navigating the #API #Economy and discover new services</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Ftutorial%2Fthe-api-economy-resources-for-programming-the-web%2F&#038;text=Useful%20%23resources%20for%20navigating%20the%20%23API%20%23Economy%20and%20discover%20new%20services&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p>The post <a
href="https://francescolelli.info/tutorial/the-api-economy-resources-for-programming-the-web/">The API Economy: Resources for Programming the Web</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/tutorial/the-api-economy-resources-for-programming-the-web/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">1654</post-id> </item> <item><title>How to Design a Good API: Advanced Object Oriented Programming</title><link>https://francescolelli.info/programming/how-to-design-a-good-api-advanced-object-oriented-programming/</link> <comments>https://francescolelli.info/programming/how-to-design-a-good-api-advanced-object-oriented-programming/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Mon, 12 Aug 2019 12:24:51 +0000</pubDate> <category><![CDATA[Java]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Python]]></category> <category><![CDATA[APIs]]></category> <category><![CDATA[Design API]]></category> <category><![CDATA[Good API]]></category> <category><![CDATA[Google talk]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=1635</guid><description><![CDATA[<p>Design a good API takes both engineering and artistic skills and is a well know challenge among experts of object oriented programming (OOP). This is a relatively advanced topic. Therefore, If you are unfamiliar with the concepts this article will give you the basic of OOP. An Application Program Interface (API in short) refers to [&#8230;]</p><p>The post <a
href="https://francescolelli.info/programming/how-to-design-a-good-api-advanced-object-oriented-programming/">How to Design a Good API: Advanced Object Oriented Programming</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>Design a good API takes both engineering and artistic skills and is a well know challenge among experts of object oriented programming (OOP). This is a relatively advanced topic. Therefore, If you are unfamiliar with the concepts this article will give you the<a
href="https://francescolelli.info/tutorial/object-oriented-programming-a-curated-set-of-resources/"> basic of OOP</a>.</p><div
class="wp-block-image"><figure
class="alignright is-resized"><img
loading="lazy" decoding="async" data-attachment-id="1637" data-permalink="https://francescolelli.info/programming/how-to-design-a-good-api-advanced-object-oriented-programming/attachment/design-a-good-api/" data-orig-file="https://francescolelli.info/wp-content/uploads/2019/08/Design-a-good-api.jpg" data-orig-size="480,343" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Design-a-good-api" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2019/08/Design-a-good-api-300x214.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2019/08/Design-a-good-api.jpg" src="https://francescolelli.info/wp-content/uploads/2019/08/Design-a-good-api.jpg?8011c3&amp;8011c3" alt="How to Design a Good API: Advanced Object Oriented Programming" class="wp-image-1637" width="276" height="197" srcset="https://francescolelli.info/wp-content/uploads/2019/08/Design-a-good-api.jpg 480w, https://francescolelli.info/wp-content/uploads/2019/08/Design-a-good-api-300x214.jpg 300w" sizes="(max-width: 276px) 100vw, 276px" /><figcaption>Design a Good API</figcaption></figure></div><p>An Application Program Interface (API in short) refers to a set of functions and procedures allowing the creation of applications that access the features or data of an operating system, application, or other service.</p><p>A good API should be:</p><ul
class="wp-block-list"><li><strong>Easy to learn and use</strong>. It should not intuitive enough to that the documentation would not be needed for the majority of the cases.</li><li><strong>Hard to misuse</strong>. At the same time an API should be designed in a way that prevent misuse of the code.  in other words it should force you to do &#8220;the right thing&#8221;</li><li><strong>Easy to read and maintain code that uses it</strong>. As the API will change over time you would like to minimize the changes that users will have to do/</li><li><strong>Sufficiently powerful</strong>. It should be able to satisfy the requirements of your users and mask the complexity behind. In other words the users should be able to solve their needs without knowing all the details of how the system works.</li><li><strong>Easy to evolve.</strong> As requirements will change over time the API should accommodate these changes without causing major disruptions in the code that is wrapping as well as in how the users are using it.</li><li><strong>Targeted to the appropriate audience.</strong> As different groups of people use different terminologies the API should take into account these aspects. In other words, what is good for a physicist may not be good for an economist.</li></ul><p>This google tech talk share some insight on the process and the best practices around the design of a good API.</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="How To Design A Good API and Why it Matters" width="800" height="600" src="https://www.youtube.com/embed/heh4OeB9A-c?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div><figcaption>How to Design a Good API</figcaption></figure><p>Joshua Bloch has an extensive experience in this matter and show how good APIs increase the pleasure and productivity of the developers who use them, the quality of the software they produce, and ultimately, the corporate bottom line.</p><hr
/><p><em> How to #design a good #API : #advancedpractice in Object Oriented #programming. Practical examples in #Java but with #python works as well. #softwaredevelopment #SoftwareEngineer </em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Fprogramming%2Fhow-to-design-a-good-api-advanced-object-oriented-programming%2F&#038;text=%20How%20to%20%23design%20a%20good%20%23API%20%3A%20%23advancedpractice%20in%20Object%20Oriented%20%23programming.%20Practical%20examples%20in%20%23Java%20but%20with%20%23python%20works%20as%20well.%20%23softwaredevelopment%20%23SoftwareEngineer%20&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p>The post <a
href="https://francescolelli.info/programming/how-to-design-a-good-api-advanced-object-oriented-programming/">How to Design a Good API: Advanced Object Oriented Programming</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/programming/how-to-design-a-good-api-advanced-object-oriented-programming/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">1635</post-id> </item> </channel> </rss>