{"id":22106,"date":"2014-07-02T08:57:46","date_gmt":"2014-07-02T06:57:46","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=22106"},"modified":"2014-07-02T08:59:44","modified_gmt":"2014-07-02T06:59:44","slug":"how-to-design-a-good-api-and-why-it-matters","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2014\/07\/02\/how-to-design-a-good-api-and-why-it-matters\/","title":{"rendered":"How To Design A Good API and Why it Matters"},"content":{"rendered":"<!-- google_ad_section_start -->\n<div class=\"jetpack-video-wrapper\"><span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe loading=\"lazy\" class=\"youtube-player\" width=\"660\" height=\"372\" src=\"https:\/\/www.youtube.com\/embed\/aAb7hSCtvGw?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\"><\/iframe><\/span><\/div>\n<p>See <a href=\"http:\/\/stackoverflow.com\/questions\/469161\/how-do-you-define-a-good-or-bad-api\">this StackOverflow discussion<\/a> for extra points.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>See this StackOverflow discussion for extra points.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"video","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","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},"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[2404,3069,1908],"keyring_services":[],"class_list":["post-22106","post","type-post","status-publish","format-video","hentry","category-general","category-programming","category-technology","category-web-work","tag-api","tag-best-practices","tag-youtube-videos","post_format-post-format-video"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":23194,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/12\/22\/http-api-design-guide\/","url_meta":{"origin":22106,"position":0},"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":29051,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/12\/07\/12-best-api-monitoring-tools-for-your-business\/","url_meta":{"origin":22106,"position":1},"title":"12 Best API Monitoring Tools for Your Business","author":"Leonid Mamchenkov","date":"December 7, 2018","format":false,"excerpt":"\"12 Best API Monitoring Tools for Your Business\" lists a bunch of services that are useful for the monitoring of your API.\u00a0 Read the whole thing for more details.\u00a0 Here's the list of the services covered: Amazon CloudWatchRigorUptrendsAssertibleBlazeMeterAppDynamicsNew RelicAPI FortressTraceviewRapidSpikeAgilityWorksAPI Science","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\/2018\/12\/api.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/12\/api.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/12\/api.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":23272,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/01\/07\/postgrest-rest-api-for-any-postgres-database\/","url_meta":{"origin":22106,"position":2},"title":"PostgREST &#8211; REST API for any Postgres database","author":"Leonid Mamchenkov","date":"January 7, 2015","format":"link","excerpt":"PostgREST - REST API for any Postgres database","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"logo","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/01\/logo-500x108.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":26070,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/26\/best-practices-for-designing-a-pragmatic-restful-api\/","url_meta":{"origin":22106,"position":3},"title":"Best Practices for Designing a Pragmatic RESTful API","author":"Leonid Mamchenkov","date":"April 26, 2016","format":false,"excerpt":"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. \u00a0It covers pretty much everything from URL structures and parameters,\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":22106,"position":4},"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":[]},{"id":18322,"url":"https:\/\/mamchenkov.net\/wordpress\/2013\/06\/06\/segment-io-common-api-for-web-analytic-services-and-applications\/","url_meta":{"origin":22106,"position":5},"title":"Segment.io &#8211; common API for web analytic services and applications","author":"Leonid Mamchenkov","date":"June 6, 2013","format":"link","excerpt":"Segment.io - common API for web analytic services and applications","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":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/22106","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=22106"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/22106\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=22106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=22106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=22106"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=22106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}