{"id":26070,"date":"2016-04-26T10:28:59","date_gmt":"2016-04-26T08:28:59","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=26070"},"modified":"2016-04-26T10:28:59","modified_gmt":"2016-04-26T08:28:59","slug":"best-practices-for-designing-a-pragmatic-restful-api","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/","title":{"rendered":"Best Practices for Designing a Pragmatic RESTful API"},"content":{"rendered":"<!-- google_ad_section_start -->\n<blockquote><p>An API is a user interface for developers. Put the effort in to ensure it&#8217;s not just functional but pleasant to use.<\/p><\/blockquote>\n<p><a href=\"http:\/\/www.vinaysahni.com\/\">Vinay Sahni<\/a> has a rather lengthy, detailed, and well-rounded post on <a href=\"http:\/\/www.vinaysahni.com\/best-practices-for-a-pragmatic-restful-api\">how to design a good RESTful API<\/a>. \u00a0It covers pretty much everything from URL structures and parameters, request methods, to error handling, documentation, and coding style.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>An API is a user interface for developers. Put the effort in to ensure it&#8217;s not just functional but pleasant to use. Vinay Sahni has a rather lengthy, detailed, and well-rounded post on how to design a good RESTful API. \u00a0It covers pretty much everything from URL structures and parameters, request methods, to error handling, &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Best Practices for Designing a Pragmatic RESTful API<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Best Practices for Designing a Pragmatic RESTful API #WebDev #API #REST","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[2404,3224,1330],"keyring_services":[],"class_list":["post-26070","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-api","tag-rest","tag-web-development"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"An API is a user interface for developers. Put the effort in to ensure it&#039;s not just functional but pleasant to use. Vinay Sahni has a rather lengthy, detailed, and well-rounded post on how to design a good RESTful API. It covers pretty much everything from URL structures and parameters, request methods, to error handling,\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Best Practices for Designing a Pragmatic RESTful API - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"An API is a user interface for developers. Put the effort in to ensure it&#039;s not just functional but pleasant to use. Vinay Sahni has a rather lengthy, detailed, and well-rounded post on how to design a good RESTful API. It covers pretty much everything from URL structures and parameters, request methods, to error handling,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-04-26T08:28:59+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-04-26T08:28:59+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Best Practices for Designing a Pragmatic RESTful API - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"An API is a user interface for developers. Put the effort in to ensure it&#039;s not just functional but pleasant to use. Vinay Sahni has a rather lengthy, detailed, and well-rounded post on how to design a good RESTful API. It covers pretty much everything from URL structures and parameters, request methods, to error handling,\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#blogposting\",\"name\":\"Best Practices for Designing a Pragmatic RESTful API - Leonid Mamchenkov\",\"headline\":\"Best Practices for Designing a Pragmatic RESTful API\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2016-04-26T10:28:59+02:00\",\"dateModified\":\"2016-04-26T10:28:59+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, Web work, API, REST, web development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#listItem\",\"name\":\"Best Practices for Designing a Pragmatic RESTful API\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#listItem\",\"position\":4,\"name\":\"Best Practices for Designing a Pragmatic RESTful API\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/\",\"name\":\"Best Practices for Designing a Pragmatic RESTful API - Leonid Mamchenkov\",\"description\":\"An API is a user interface for developers. Put the effort in to ensure it's not just functional but pleasant to use. Vinay Sahni has a rather lengthy, detailed, and well-rounded post on how to design a good RESTful API. It covers pretty much everything from URL structures and parameters, request methods, to error handling,\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/26\\\/best-practices-for-designing-a-pragmatic-restful-api\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2016-04-26T10:28:59+02:00\",\"dateModified\":\"2016-04-26T10:28:59+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Best Practices for Designing a Pragmatic RESTful API - Leonid Mamchenkov","description":"An API is a user interface for developers. Put the effort in to ensure it's not just functional but pleasant to use. Vinay Sahni has a rather lengthy, detailed, and well-rounded post on how to design a good RESTful API. It covers pretty much everything from URL structures and parameters, request methods, to error handling,","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#blogposting","name":"Best Practices for Designing a Pragmatic RESTful API - Leonid Mamchenkov","headline":"Best Practices for Designing a Pragmatic RESTful API","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2016-04-26T10:28:59+02:00","dateModified":"2016-04-26T10:28:59+02:00","inLanguage":"en-US","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#webpage"},"articleSection":"All, Programming, Technology, Web work, API, REST, web development"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#listItem","name":"Best Practices for Designing a Pragmatic RESTful API"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#listItem","position":4,"name":"Best Practices for Designing a Pragmatic RESTful API","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/","name":"Best Practices for Designing a Pragmatic RESTful API - Leonid Mamchenkov","description":"An API is a user interface for developers. Put the effort in to ensure it's not just functional but pleasant to use. Vinay Sahni has a rather lengthy, detailed, and well-rounded post on how to design a good RESTful API. It covers pretty much everything from URL structures and parameters, request methods, to error handling,","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2016-04-26T10:28:59+02:00","dateModified":"2016-04-26T10:28:59+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"Best Practices for Designing a Pragmatic RESTful API - Leonid Mamchenkov","og:description":"An API is a user interface for developers. Put the effort in to ensure it's not just functional but pleasant to use. Vinay Sahni has a rather lengthy, detailed, and well-rounded post on how to design a good RESTful API. It covers pretty much everything from URL structures and parameters, request methods, to error handling,","og:url":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2016-04-26T08:28:59+00:00","article:modified_time":"2016-04-26T08:28:59+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"Best Practices for Designing a Pragmatic RESTful API - Leonid Mamchenkov","twitter:description":"An API is a user interface for developers. Put the effort in to ensure it's not just functional but pleasant to use. Vinay Sahni has a rather lengthy, detailed, and well-rounded post on how to design a good RESTful API. It covers pretty much everything from URL structures and parameters, request methods, to error handling,","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"26070","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-19 16:14:46","updated":"2026-01-15 12:08:46","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tBest Practices for Designing a Pragmatic RESTful API\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"Best Practices for Designing a Pragmatic RESTful API","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":29027,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/11\/25\/crell-apiproblem-a-simple-implementation-of-the-api-problem-specification\/","url_meta":{"origin":26070,"position":0},"title":"Crell\/ApiProblem &#8211; a simple implementation of the api-problem specification","author":"Leonid Mamchenkov","date":"November 25, 2018","format":false,"excerpt":"I've been working with REST\/RESTful APIs for a while now.\u00a0 They are usually a lot better than the SOAP or XML-RPC stuff we had before.\u00a0 But they are also not perfect.\u00a0 Error handling and reporting is a common area between many implementations that needs more attention and consistency.\u00a0 Turns out,\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":22078,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/06\/26\/google-introduces-gmail-api\/","url_meta":{"origin":26070,"position":1},"title":"Google introduces Gmail API","author":"Leonid Mamchenkov","date":"June 26, 2014","format":false,"excerpt":"Google is introducing the new Gmail API: While IMAP is great at what it was designed for (connecting email clients to email servers in a standard way), it wasn\u2019t really designed to do all of the cool things that you have been working on, which is why this week at\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":25971,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/03\/24\/wordpress-plugin-typecase-web-fonts\/","url_meta":{"origin":26070,"position":2},"title":"WordPress Plugin : Typecase Web Fonts","author":"Leonid Mamchenkov","date":"March 24, 2016","format":false,"excerpt":"Disclaimer: I'm not much of a fonts guy, but once in a while I just want to be. I was reading the \"Best Practices for Designing a Pragmatic RESTful API\" article, when I realized I liked the font it was written in very much. \u00a0I liked it so much that\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":37915,"url":"https:\/\/mamchenkov.net\/wordpress\/2019\/03\/11\/gitguardian-api-security-best-practices\/","url_meta":{"origin":26070,"position":3},"title":"GitGuardian API Security Best Practices","author":"Leonid Mamchenkov","date":"March 11, 2019","format":false,"excerpt":"The team behind GitGuardian, a tool that helps developers to keep credentials and other secrets outside of the source code, shares their documentation for the API security best practices. The cool bit about their documentation is that it covers both how to avoid the issues and how to solve them\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":23194,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/12\/22\/http-api-design-guide\/","url_meta":{"origin":26070,"position":4},"title":"HTTP API Design Guide","author":"Leonid Mamchenkov","date":"December 22, 2014","format":"link","excerpt":"HTTP API Design Guide This guide describes a set of HTTP+JSON API design practices, originally extracted from work on the Heroku Platform API. This guide informs additions to that API and also guides new internal APIs at Heroku. We hope it\u2019s also of interest to API designers outside of Heroku.\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":40663,"url":"https:\/\/mamchenkov.net\/wordpress\/2019\/03\/28\/api-platform-rest-and-graphql-framework-to-build-modern-api-driven-projects\/","url_meta":{"origin":26070,"position":5},"title":"API Platform &#8211; REST and GraphQL framework to build modern API-driven projects","author":"Leonid Mamchenkov","date":"March 28, 2019","format":false,"excerpt":"API Platform is a framework for building API-driven projects. I came across this via this blog post that covers the recent release of v2.4. The list of features and components is quite extensive: Read and write support for MongoDBRead support for ElasticsearchMessage queues support via a number of brokers, including\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/03\/api-platform-2.4-1200x600.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/03\/api-platform-2.4-1200x600.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/03\/api-platform-2.4-1200x600.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/03\/api-platform-2.4-1200x600.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/03\/api-platform-2.4-1200x600.png?resize=1050%2C600&ssl=1 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26070","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=26070"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26070\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=26070"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=26070"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=26070"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=26070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}