Skip to content

Instantly share code, notes, and snippets.

@dianamontalion
Last active March 7, 2023 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dianamontalion/45edb70d535a72e2d57c5599d8277e3e to your computer and use it in GitHub Desktop.
Save dianamontalion/45edb70d535a72e2d57c5599d8277e3e to your computer and use it in GitHub Desktop.
FS2S Newsletter in all it's parts
{
"data": {
"newsletter": {
"name": "Communication Patterns: APIs",
"datePublished": "2023-01-12",
"url": "communication-patterns-apis",
"text": {
"html": "<p>In this series, we’ve explored <a rel=\"noopener\" target='_blank' title=\"Communication Patterns: Decoupling\" href=\"https://mentrixgroup.com/newsletter/2022/12/22/communication-patterns-decoupling/\">drawing boundaries</a> around software parts. We’ve discussed <a rel=\"noopener\" target='_blank' title=\"Communication Patterns: Integration\" href=\"https://mentrixgroup.com/newsletter/2023/01/06/communication-patterns-integration/\">integration patterns,</a> forming new relationships between decoupled parts. This week, we explore creating structure for the “sources” of information in a decoupled system. Specifically, how APIs can communicate information in a well-structured way.</p><p>Sources of information have layers; the software part itself, the logic that governs communication, the specific digital locations where communication happens (endpoints) and the information being shared. The layers that interface with consumers and govern communication with the application, are the API (application programming interface).</p><p>Designing these layers will likely be familiar. Even tightly-coupled software (usually) interfaces with other software or resources. Software that serves web pages, for example, is a source of information, with an endpoint (URL) that serves it (to a browser) based on logical rules.</p><p>Sharing information depends, to some extent, on when that information is needed. When a customer buys a product, the software part handling the transaction might want to find out, from another software part, if the customer has a credit that can be applied. When a news article is updated, readers need to see the edited version. In some situations, a consumer checks the source for new information every 24 hours. In others, consumers send bazillions of asynchronous requests.</p><p>We will dive into timing (events) in subsequent weeks. In another edition, we’ll discuss streaming information and events. Here, we’ll specifically look at APIs as the interface to share and retrieve information.</p><p>In its simplest form, an API enables one software part to get information from another software part. <strong>As complexity in a system increases, APIs become integrated into the architecture, essential to the system’s design.</strong> Kubernetes, for example, makes extensive use of APIs to orchestrate interactions across a complex series of services.</p><p>APIs can retrieve information from many types of storage; databases, S3, file systems, as well as operating systems, services running in the cloud, etc. They can be local or remote, using different types of protocols (HTTP, RPC). They can structure responses using XML, JSON or … there isn’t a limiting rule about the structure of responses except that ideally, they are useful and appropriate for the consumer. APIs that return HTML, for example, aren’t helpful to consumers that aren’t displaying web pages.</p><p>The emerging practice of Hypermedia APIs generates responses that are dynamic and discoverable. Instead of getting the static information, consumers get links to endpoints where further, deeper information is available. The consumer’s logic dictates which links to follow. A query language like GraphQL can sit on top of an API so consumers can ask for exactly what they want, across multiple API endpoints, and omit information they don’t need. The more sophisticated our digital systems become, the more avenues of communication design open up.</p><p>Here are some resources to explore APIs. As always, we’d love to hear any recommendations you have!</p>"
},
"learningResources": [
{
"learningResourceType": "Read",
"resource": {
"name": "Designing Web APIs: Building the APIs that Developers Love",
"abstract": {
"text": "Selecting a book to feature in the newsletter's API edition was tough. There are other excellent books on this topic, with slightly different points of view. This book is a good start, though reading four or five competing books is better."
},
"id": "cleadchry2a0w0bk9394loshs",
"learningResourceType": "book",
"url": "https://bookshop.org/p/books/designing-web-apis-building-apis-that-developers-love-amir-shevat/8140189ean9781492026921",
"creator": [
{
"name": "Brenda Jin",
"id": "clead6qy925te0bk9kmww7c07"
}
]
}
},
{
"learningResourceType": "Watch",
"resource": {
"name": "Unlock the Secrets of Great, Lasting APIs",
"abstract": {
"text": "This is the first goto; Book Club video and a good intro to the series. It includes other interviews about APIs that are worth watching. Each gives an overview of API thinking from the minds that teach it."
},
"id": "cleaeh2r17fyk0bk7sc4w6ckw",
"learningResourceType": "video",
"url": "https://gotopia.tech/bookclub/episodes/21/how-to-build-solid-and-great-apis",
"creator": [
{
"name": "Mike Amundsen",
"id": "cleaego1fhvaq0aiowygeka28"
}
]
}
},
{
"learningResourceType": "Listen",
"resource": {
"name": "APIs Unplugged",
"abstract": {
"text": "This podcast has three seasons of episodes … a cornucopia of discussions on API essential topics. Dive in anywhere."
},
"id": "clexgu8tgdxwg0aiuoig2tsx4",
"learningResourceType": "podcast",
"url": "https://soundcloud.com/mulesoft/sets1",
"creator": [
{
"name": "Matt McLarty",
"id": "clexgsj8hqqmu0ak8635ocjrj"
},
{
"name": "Mike Amundsen",
"id": "cleaego1fhvaq0aiowygeka28"
}
]
}
},
{
"learningResourceType": "Learn",
"resource": {
"name": "REST APIs with Flask and Python",
"abstract": {
"text": "This bestselling Udemy course has 20K positive reviews and 100K students thus far. If you are a beginner, this is an ideal course to try. The mix of toolset makes it fun for non-beginners too."
},
"id": "clexgwq51qw7a0biol5131rnf",
"learningResourceType": "course",
"url": "https://www.udemy.com/course/rest-api-flask-and-python/",
"creator": [
{
"name": "Jose Salvatierra",
"id": "clexgwncje05s0aiuv1ex23kj"
}
]
}
}
],
"quotations": [
{
"text": "It seems we’ve got a mental block when it comes to hypermedia in web APIs. This is a big problem, because hypermedia is the feature that makes a web API capable of handling changes gracefully.",
"spokenByCharacter": {
"name": "Leonard Richardson",
"id": "clexgyince1eo0aiuiq1cfe5l"
}
}
],
"event": {
"name": "API Day",
"startDate": "2023-03-14T16:00:00+00:00",
"endDate": null,
"duration": "PDT5H",
"url": null
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment