Skip to content
CMO & CTO
CMO & CTO

Closing the Bridge Between Marketing and Technology, By Luis Fernandez

  • Digital Experience
    • Experience Strategy
    • Experience-Driven Commerce
    • Multi-Channel Experience
    • Personalization & Targeting
    • SEO & Performance
    • User Journey & Behavior
  • Marketing Technologies
    • Analytics & Measurement
    • Content Management Systems
    • Customer Data Platforms
    • Digital Asset Management
    • Marketing Automation
    • MarTech Stack & Strategy
    • Technology Buying & ROI
  • Software Engineering
    • Software Engineering
    • Software Architecture
    • General Software
    • Development Practices
    • Productivity & Workflow
    • Code
    • Engineering Management
    • Business of Software
    • Code
    • Digital Transformation
    • Systems Thinking
    • Technical Implementation
  • About
CMO & CTO

Closing the Bridge Between Marketing and Technology, By Luis Fernandez

Hypermedia Debates and Pragmatic Compromises

Posted on November 27, 2014 By Luis Fernandez

I was sipping a lukewarm cortado after a late meetup when the debate started again. One side pulled up GitHub docs and said that links in responses are plenty. The other side waved a printout of Fielding and asked for full hypermedia controls. A third person just wanted their iOS app to stop breaking every time the backend team changed a field. We left the cafe with the same question many teams face today. Do we bet on hypermedia or do we ship something simple that our clients can consume right now?

Hypermedia sits in that interesting spot where theory meets the grind. The pitch is clean. The server drives the client through links and forms. The client follows link relations instead of stitching URLs, so behavior can evolve without breakage. If you have used HAL, Siren, or Collection JSON, you have seen different ways to express links and actions. HATEOAS promises a world where your mobile app is more like a browser and less like a bundle of hard coded endpoints. That dream sounds great when your API is public or when you want many kinds of clients to explore and adapt. It can feel heavy when you just need a checkout flow to work by Friday and your Android build is already red.

This is where the practical middle ground shines. Add links where they save you money and time. For example, embed a self link and the next obvious transitions like pay, cancel, refund, or next in paged lists. Name link relations clearly and reuse known ones when you can. Do not try to model every possible state change on day one. Start with a plain JSON body that is easy to read and layer in links for the hot paths. Your clients can still keep simple code for the obvious bits while gaining the option to follow server driven flows later. Teams at Stripe, PayPal, and GitHub have taken steps in this direction. They are not all in on hypermedia, yet they expose links that reduce guesswork without forcing a brand new client model.

Then there is the part of REST that quietly saves the most pain. Versioning, caching, and content negotiation. Many of us keep seeing teams pick one of two roads. Put the version in the URL like /v1/, or try a media type like application/vnd.company.v1+json. The header route looks neat, but mobile clients and proxies can be touchy. The URL path is blunt yet clear, and it plays nice with CDNs. Pick one and move on. If you go with a URL version, still honor ETag and Last Modified so clients can cache and revalidate. Encourage conditional requests and return 304 when content did not change. PATCH for partial updates is a friend when payloads grow. Be strict with idempotency for PUT and for retrying payments or task creation. Small moves like these buy more stability than any perfect purity test.

Pagination, errors, and auth are the spots where APIs cause real world pain. Offset and limit look easy until your table crosses a few million rows and page two starts skipping items. Cursor based pagination or a time based bookmark keeps order stable and helps with backfills. For errors, ship a simple envelope with a code, a human string, a machine key, and a link to docs. Include a request id for support. Rate limits should be clear with headers for remaining, limit, and reset. On auth, OAuth 2.0 is the default for public clients today. Bearer tokens over TLS only. Keep scopes simple and specific. Many teams still use opaque tokens and a session store. JWT is gaining buzz but comes with tricky revocation. CORS trips teams up in the browser so return precise headers and avoid wildcard on credentials. These are not glamorous choices, yet they shape how trustworthy your API feels to a developer on a tight sprint.

Docs and tooling round out the experience. Swagger 2.0 just dropped, RAML is strong, and API Blueprint has a nice narrative style. Pick one and publish interactive docs from day one. Ship examples that match real responses. Keep a collection for Postman or curl scripts for quick starts. Contract tests between services are worth the effort when your stack grows. Consumer driven contracts help prevent the crime scene where service A changed a field and five teams discovered it in production. In the microservices chatter, people mention Netflix, Heroku, and AWS a lot. They do great work, but the hidden win is not the buzzy tech. It is the discipline of clear boundaries and predictable APIs. Hypermedia can help there. So can a small set of link relations and a rule that teams only talk to the public shape of a service, not to private endpoints behind the curtain.

So what about hypermedia in day to day product work. My take is boring and useful. Treat hypermedia as a compass, not a religion. If your API is public or you expect a swarm of clients over time, invest more in link relations, typed actions, and discoverable forms. If you run a small set of clients you control, start simple and sprinkle links in places that change often. Use URL versioning or a clear media type and stick with it. Cache with ETags. Return strong errors. Honor rate limits. Prefer cursors over offsets when lists get big. Keep OAuth 2.0 flows clean and short on scopes. Write docs people can try, with curl ready to paste. Most of all, make one promise and keep it. Your API should not surprise clients next week. The rest is taste and budget.

Summary: Hypermedia debates make for great talks, and the ideas are valuable. Teams ship under deadlines though, and the cost of change hits wallets and sleep. Put links where they remove guesswork. Pick a versioning story, turn on caching, and return errors that help a tired developer at two in the morning. Use OAuth 2.0 with care, pick cursor pagination once data grows, and invest in docs and contract tests. When you face a choice between purity and progress, choose the move that keeps clients working and gives you room to evolve. That balance is what makes a REST API worth building and worth using.

General Software Software Engineering

Post navigation

Previous post
Next post
  • Digital Experience (94)
    • Experience Strategy (19)
    • Experience-Driven Commerce (5)
    • Multi-Channel Experience (9)
    • Personalization & Targeting (21)
    • SEO & Performance (10)
  • Marketing Technologies (92)
    • Analytics & Measurement (14)
    • Content Management Systems (45)
    • Customer Data Platforms (4)
    • Digital Asset Management (8)
    • Marketing Automation (6)
    • MarTech Stack & Strategy (10)
    • Technology Buying & ROI (3)
  • Software Engineering (310)
    • Business of Software (20)
    • Code (30)
    • Development Practices (52)
    • Digital Transformation (21)
    • Engineering Management (25)
    • General Software (82)
    • Productivity & Workflow (30)
    • Software Architecture (85)
    • Technical Implementation (23)
  • 2025 (12)
  • 2024 (8)
  • 2023 (18)
  • 2022 (13)
  • 2021 (3)
  • 2020 (8)
  • 2019 (8)
  • 2018 (23)
  • 2017 (17)
  • 2016 (40)
  • 2015 (37)
  • 2014 (25)
  • 2013 (28)
  • 2012 (24)
  • 2011 (30)
  • 2010 (42)
  • 2009 (25)
  • 2008 (13)
  • 2007 (33)
  • 2006 (26)

Ab Testing Adobe Adobe Analytics Adobe Target AEM agile-methodologies Analytics architecture-patterns CDP CMS coding-practices content-marketing Content Supply Chain Conversion Optimization Core Web Vitals customer-education Customer Data Platform Customer Experience Customer Journey DAM Data Layer Data Unification documentation DXP Individualization java Martech metrics mobile-development Mobile First Multichannel Omnichannel Personalization product-strategy project-management Responsive Design Search Engine Optimization Segmentation seo spring Targeting Tracking user-experience User Journey web-development

©2025 CMO & CTO | WordPress Theme by SuperbThemes