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

RESTful Resources: Nouns, Verbs, and Clarity

Posted on November 10, 2007 By Luis Fernandez

Every week I run into web APIs that read like a to do list for servers, written in a hurry and hard to explain.
Let us trade mystery verbs for RESTful resources where URLs wear nouns and HTTP methods carry the verbs.

REST from a working seat is refreshingly simple once you decide the web already gave us the verbs we need, and your job is to name things. GET reads, POST creates, PUT replaces, DELETE removes, and the URL names the thing in play, which turns random endpoints into a tidy map that humans and tools can share. When your endpoint is a clean noun like users or invoices instead of makeUser or processInvoice, the mental model clicks for everyone, from the backend to the person writing docs. You can point a browser to the same address, curl it during a late night test, or wire it into a mobile app, and the intent stays clear across each hop. Caching proxies understand GET without special hints, and unsafe changes do not get cached when you stick to the verbs, so surprises shrink and pageloads get faster for free. Errors map to plain status codes, so the first clue lives in the response line rather than a mystery payload string, which cuts time during that next weird bug hunt. The payoff is clarity that travels across teams and tools with fewer meetings and less glue code, because nouns center the conversation and verbs carry the change.

Right now the Rails crowd leans hard into resources, with 2.0 making routes that speak in plural nouns feel like default city, which nudges apps toward cleaner controllers and URLs. The Atom Publishing Protocol just went stable, and it reads like a field guide for resource editing through plain HTTP, with entries, collections, and edits handled by known verbs. On the big service side, Amazon S3 talks in buckets and objects, which fits the shape, while Twitter still exposes a lot of read calls that look like resources most days. Flickr and Facebook expose method style endpoints in many places, which works, though it often hides state behind action names that clients must memorize and then defend in code. When the noun sits in the URL you get bookmarking, link hacking, and nicer logs for free, which saves time during support fires and makes troubleshooting less like archaeology. When the verb hides in a parameter your cache and your browser have less to work with, and you end up rebuilding rules that HTTP already knows and middleboxes already respect. We all want speed and predictability, and the less magic we put in custom wrappers, the closer we get to both without extra libraries or a parade of one off tweaks.

If you are moving an existing API, start by naming the real things your users care about and put those nouns in the URL tree without extra action words that repeat the method. Keep collections plural, allow each item to live at a stable address, and let related links show up in responses so clients can follow their nose and discover neighbors step by step. Use GET for reads so caches can help, return ETag or Last Modified so clients can ask politely, and make PUT or DELETE idempotent so retries are safe during outages. Favor clear status codes like 201 for a fresh resource or 409 when there is a conflict, and describe problems with a short human sentence that someone can paste into a bug. If you need versions, prefer a clean prefix or a header and keep the resource names steady, since that is what people bookmark, share in emails, and stick into scripts. Document examples beside the URLs rather than a separate theory page, and show complete flows like create list update delete with the same nouns between steps so paths stay learnable. The result feels boring in the best way, where URLs tell the story, verbs do the work, and the wire stays readable when your team changes or your traffic triples.

Good APIs age like plain text, and plain text starts with nouns that stand still and verbs that mean what they say.

Software Architecture 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