8 Commits

15 changed files with 106 additions and 263 deletions

View File

@ -7,3 +7,4 @@ RewriteRule ^(.*)$ http://www.restapitutorial.com/$1 [r=301,nc]
//301 Redirect Old File //301 Redirect Old File
Redirect 301 http://www.restapitutorial.com/restquicktips.html http://www.restapitutorial.com/lessons/restquicktips.html Redirect 301 http://www.restapitutorial.com/restquicktips.html http://www.restapitutorial.com/lessons/restquicktips.html
Redirect 301 http://www.restapitutorial.com/httpmethods.html http://www.restapitutorial.com/lessons/httpmethods.html Redirect 301 http://www.restapitutorial.com/httpmethods.html http://www.restapitutorial.com/lessons/httpmethods.html
Redirect 301 http://www.restapitutorial.com/apiconsulting.html http://www.restapitutorial.com/restapiwebinar.html

1
ads.txt Normal file
View File

@ -0,0 +1 @@
google.com, pub-2093481943685202, DIRECT, f08c47fec0942fa0

View File

@ -1,159 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>REST API Consulting Services</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="REST API Consulting Services, including api strategy and design, QA test strategy and automation, development and hiring.">
<meta name="author" content="Todd Fredrich">
<!-- Le styles -->
<link href="https://maxcdn.bootstrapcdn.com/twitter-bootstrap/2.0.4/css/bootstrap-combined.min.css" rel="stylesheet">
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
</style>
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-31328878-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '389059184866929');
fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=389059184866929&ev=PageView&noscript=1"
/></noscript>
<!-- End Facebook Pixel Code -->
</head>
<body>
<div class="container">
<div class="row">
<div class="span6">
<h2>Get Your API Program Started Now!</h2>
<p>The API Economy is here and requires new skills and understanding. The benefits of sharing applications and data via APIs are plentiful and varied. But getting on the right path from the start is imperative. Our years of experience with APIs and API-based applications and testing will ensure you're well on your way to success. Some of the services we offer are:</p>
<ul>
<li><strong>API Strategy:</strong> Discover the primary business models of the API Economy and how to leverage one or more of them in your company.</li>
<li><strong>Developer Training:</strong> Get your developers on track quickly toward building APIs that other developers love to use.</li>
<li><strong>API Design and Review:</strong> Use our expertise to ensure an API that solves the most use cases and that developers love.</li>
<li><strong>Implementation:</strong> Hit the ground running and get an API built quickly by leveraging our development expertise.</li>
<li><strong>Architecture:</strong> Have confidence that your architecture will handle your scale needs now and in the future--accounting for costs now.</li>
<li><strong>QA Strategy &amp; Audit:</strong> Ensure a stable API with the right QA testing strategy. We can also perform an audit of your current testing practices.</li>
<li><strong>Test Automation:</strong> Use our expertise to implement your testing strategy.</li>
<li><strong>Hiring:</strong> Need full-time API development and/or testing expertise? We will help you find great people.</li>
</ul>
<p>Using the form on the right, tell us what you're most interested in and how to contact you...</p>
<p>--The RestAPITutorial.com Team</p>
</div>
<div class="span6">
<!-- Begin MailChimp Signup Form -->
<link href="//cdn-images.mailchimp.com/embedcode/classic-081711.css" rel="stylesheet" type="text/css">
<style type="text/css">
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; }
/* Add your own MailChimp form style overrides in your site stylesheet or in this style block.
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
</style>
<div id="mc_embed_signup">
<form action="//RestApiTutorial.us1.list-manage.com/subscribe/post?u=3449a65355441906371f87327&amp;id=826467d568" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<div id="mc_embed_signup_scroll">
<h2>Get More Information!</h2>
<div class="indicates-required"><span class="asterisk">*</span> indicates required</div>
<div class="mc-field-group">
<label for="mce-EMAIL">Email Address <span class="asterisk">*</span>
</label>
<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL">
</div>
<div class="mc-field-group">
<label for="mce-FNAME">First Name </label>
<input type="text" value="" name="FNAME" class="" id="mce-FNAME">
</div>
<div class="mc-field-group">
<label for="mce-LNAME">Last Name </label>
<input type="text" value="" name="LNAME" class="" id="mce-LNAME">
</div>
<div class="mc-field-group size1of2">
<label for="mce-PHONE">Phone Number </label>
<input type="text" name="PHONE" class="" value="" id="mce-PHONE">
</div>
<div class="mc-field-group input-group">
<strong>API Interest Areas </strong>
<ul><li><input type="checkbox" value="1" name="group[4629][1]" id="mce-group[4629]-4629-0"><label for="mce-group[4629]-4629-0">API Strategy</label></li>
<li><input type="checkbox" value="2" name="group[4629][2]" id="mce-group[4629]-4629-1"><label for="mce-group[4629]-4629-1">QA Strategy &amp; Audit</label></li>
<li><input type="checkbox" value="4" name="group[4629][4]" id="mce-group[4629]-4629-2"><label for="mce-group[4629]-4629-2">Developer Training</label></li>
<li><input type="checkbox" value="8" name="group[4629][8]" id="mce-group[4629]-4629-3"><label for="mce-group[4629]-4629-3">API Design &amp; Review</label></li>
<li><input type="checkbox" value="16" name="group[4629][16]" id="mce-group[4629]-4629-4"><label for="mce-group[4629]-4629-4">Help Implementing</label></li>
<li><input type="checkbox" value="32" name="group[4629][32]" id="mce-group[4629]-4629-5"><label for="mce-group[4629]-4629-5">Test Automation</label></li>
<li><input type="checkbox" value="64" name="group[4629][64]" id="mce-group[4629]-4629-6"><label for="mce-group[4629]-4629-6">Hiring Assistance</label></li>
</ul>
</div>
<div id="mce-responses" class="clear">
<div class="response" id="mce-error-response" style="display:none"></div>
<div class="response" id="mce-success-response" style="display:none"></div>
</div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
<div style="position: absolute; left: -5000px;"><input type="text" name="b_3449a65355441906371f87327_826467d568" tabindex="-1" value=""></div>
<div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
</div>
</form>
</div>
<!--End mc_embed_signup--></div>
</div>
<hr>
<footer>
</footer>
</div> <!-- /container -->
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="http://www.restapitutorial.com">Home</a></li>
<li class="dropdown" id="api-school"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="lessons/whatisrest.html">What Is REST?</a></li>
<li><a href="lessons/restquicktips.html">REST Quick Tips</a></li>
<li><a href="lessons/httpmethods.html">HTTP Methods</a></li>
<li><a href="lessons/restfulresourcenaming.html">Resource Naming</a></li>
<li><a href="lessons/idempotency.html">Idempotence</a></li>
</ul>
</li>
<li><a href="httpstatuscodes.html">HTTP Status Codes</a></li>
<li><a href="resources.html">Resources</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/twitter-bootstrap/2.0.4/js/bootstrap.min.js"></script>
<a href="https://github.com/tfredrich/RestApiTutorial.com"><img style="position: absolute; top: 0; right: 0; border: 0; z-index: 1050;" src="https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"></a>
</body>
</html>

View File

@ -1,7 +1,7 @@
<html> <html>
<head> <head>
<title>Moved to new URL: http://www.restapitutorial.com/lessons/httpmethods.html</title> <title>Moved to new URL: https://www.restapitutorial.com/lessons/httpmethods.html</title>
<meta http-equiv=refresh content="0; url=http://www.restapitutorial.com/lessons/httpmethods.html" /> <meta http-equiv=refresh content="0; url=https://www.restapitutorial.com/lessons/httpmethods.html" />
<meta name="robots" content="noindex,follow" /> <meta name="robots" content="noindex,follow" />
<!-- Facebook Pixel Code --> <!-- Facebook Pixel Code -->
<script> <script>
@ -22,9 +22,9 @@
<!-- End Facebook Pixel Code --> <!-- End Facebook Pixel Code -->
</head> </head>
<body> <body>
<h1>This page has been moved to http://www.restapitutorial.com/lessons/httpmethods.html</h1> <h1>This page has been moved to https://www.restapitutorial.com/lessons/httpmethods.html</h1>
<p>If your browser doesn't redirect you to the new location please <p>If your browser doesn't redirect you to the new location please
<a href="http://www.restapitutorial.com/lessons/httpmethods.html"><strong>click here</strong></a>, <a href="https://www.restapitutorial.com/lessons/httpmethods.html"><strong>click here</strong></a>,
sorry for the hassles!</p> sorry for the hassles!</p>
</body> </body>
</html> </html>

View File

@ -71,7 +71,7 @@
<div class="row"> <div class="row">
<div class="span12"> <div class="span12">
<h1>HTTP Status Codes</h1> <h1>HTTP Status Codes</h1>
<p>This page is created from HTTP status code information found at <a href="http://www.ietf.org/assignments/http-status-codes/http-status-codes.xml" target="_blank">ietf.org</a> and <a href="http://en.wikipedia.org/wiki/HTTP_status_code" target="_blank">Wikipedia</a>. Click on the <strong>category heading</strong> or the <strong>status code</strong> link to read more.</p> <p>This page is created from HTTP status code information found at <a href="https://www.ietf.org/assignments/http-status-codes/http-status-codes.xml" target="_blank">ietf.org</a> and <a href="https://en.wikipedia.org/wiki/HTTP_status_code" target="_blank">Wikipedia</a>. Click on the <strong>category heading</strong> or the <strong>status code</strong> link to read more.</p>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -828,17 +828,17 @@
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p> <p><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="https://creativecommons.org/ns#" href="https://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
</footer> </footer>
</div> <!-- /container --> </div> <!-- /container -->
<div class="navbar navbar-fixed-top"> <div class="navbar navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a> <a class="brand" href="https://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li><a href="http://www.restapitutorial.com">Home</a></li> <li><a href="https://www.restapitutorial.com">Home</a></li>
<li class="dropdown" id="api-school"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a> <li class="dropdown" id="api-school"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="lessons/whatisrest.html">What Is REST?</a></li> <li><a href="lessons/whatisrest.html">What Is REST?</a></li>

View File

@ -82,56 +82,35 @@ valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="span2 banner-container"> <div class="span2">
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ul class="nav nav-list">
<!-- Rest API Tutorial Responsive --> <li class="active"><a href="https://www.restapitutorial.com">Home</a></li>
<ins class="adsbygoogle" <ul class="nav nav-list">
style="display:block" <li><a href="lessons/whatisrest.html">What Is REST?</a></li>
data-ad-client="ca-pub-2093481943685202" <li><a href="lessons/restquicktips.html">REST Quick Tips</a></li>
data-ad-slot="4845828438" <li><a href="lessons/httpmethods.html">HTTP Methods</a></li>
data-ad-format="auto"></ins> <li><a href="lessons/restfulresourcenaming.html">Resource Naming</a></li>
<script> <li><a href="lessons/idempotency.html">Idempotence</a></li>
(adsbygoogle = window.adsbygoogle || []).push({}); </ul>
</script> </li>
<li><a href="httpstatuscodes.html">HTTP Status Codes</a></li>
<li><a href="resources.html">Resources</a></li>
</ul>
</div> </div>
<!-- Main hero unit for a primary marketing message or call to action --> <!-- Main hero unit for a primary marketing message or call to action -->
<div class="span10"> <div class="span10">
<div class="hero-unit"> <div class="hero-unit">
<p><strong>Hey, Fellow REST API Designer!</strong></p>
<p>You're here to get your <strong>questions answered.</strong> Let's make sure your most-pressing ones are addressed!</p>
<p>I'm creating a FREE Webinar on REST API design and want to <strong>focus on your questions!</strong></p>
<p><a href="restapiwebinar.html">Submit your most burning REST API question here</a>, along with your email address and we'll be in touch!</p>
<p>REST well!<br>
Todd Fredrich, <em>The REST API Tutor</em></p>
<a class="btn btn-primary btn-large" href="restapiwebinar.html">Submit Your Question Now!</a>
</div>
<div>
<h1>Learn <abbr title="Representational State Transfer">REST</abbr>: A RESTful Tutorial</h1> <h1>Learn <abbr title="Representational State Transfer">REST</abbr>: A RESTful Tutorial</h1>
<p><strong>Hey, Fellow REST API Designer!</strong></p>
<p>Building RESTful web services, like other programming skills is <strong>part art, part science</strong>. As the Internet industry progresses, creating a REST API becomes more concrete with emerging best practices. As RESTful web services don't follow a prescribed standard except for HTTP, it's important to build your RESTful API in accordance with industry best practices to ease development and increase client adoption.</p> <p>Building RESTful web services, like other programming skills is <strong>part art, part science</strong>. As the Internet industry progresses, creating a REST API becomes more concrete with emerging best practices. As RESTful web services don't follow a prescribed standard except for HTTP, it's important to build your RESTful API in accordance with industry best practices to ease development and increase client adoption.</p>
<p>Presently, there aren't a lot of REST API guides to help the lonely developer. <a href="http://www.restapitutorial.com">RestApiTutorial.com</a> is dedicated to tracking REST API best practices and making resources available to enable quick reference and self education for the development crafts-person. We'll discuss both the art and science of creating REST Web services.</p> <p>Presently, there aren't a lot of REST API guides to help the lonely developer. <a href="https://www.restapitutorial.com">RestApiTutorial.com</a> is dedicated to tracking REST API best practices and making resources available to enable quick reference and self education for the development crafts-person. We'll discuss both the art and science of creating REST Web services.</p>
<p>&mdash;Todd Fredrich, <em>The REST API Tutor</em></p> <p>&mdash;Todd Fredrich, <em>The REST API Tutor</em></p>
<p>Jump in with <a href="lessons/whatisrest.html">What Is REST?</a>, an overview of concepts and constraints of the RESTful architecture.</p> <p>Jump in with <a href="lessons/whatisrest.html">What Is REST?</a>, an overview of concepts and constraints of the RESTful architecture.</p>
<p><a class="btn btn-primary btn-large" href="lessons/whatisrest.html">Next &raquo;</a></p> <p><a class="btn btn-primary btn-large" href="lessons/whatisrest.html">Next &raquo;</a></p>
</div> </div>
<div>
<h2>Sitemap</h2>
<ul>
<li>Home</li>
<li>Tutorials<ul></li>
<li><a href="lessons/whatisrest.html">What Is REST?</a></li>
<li><a href="lessons/restquicktips.html">REST Quick Tips</a></li>
<li><a href="lessons/httpmethods.html">HTTP Methods</a></li>
<li><a href="lessons/restfulresourcenaming.html">Resource Naming</a></li>
<li><a href="lessons/idempotency.html">Idempotence</a></li>
</ul>
</li>
<li><a href="httpstatuscodes.html">HTTP Status Codes</a></li>
<li><a href="resources.html">Resources</a></li>
</ul>
</div>
<hr> <hr>
<footer> <footer>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p> <p><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="https://creativecommons.org/ns#" href="https://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
</footer> </footer>
</div> </div>
</div> <!-- /row --> </div> <!-- /row -->
@ -140,10 +119,10 @@ valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a> <a class="brand" href="https://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li class="active"><a href="http://www.restapitutorial.com">Home</a></li> <li class="active"><a href="https://www.restapitutorial.com">Home</a></li>
<li class="dropdown" id="api-school"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a> <li class="dropdown" id="api-school"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="lessons/whatisrest.html">What Is REST?</a></li> <li><a href="lessons/whatisrest.html">What Is REST?</a></li>

View File

@ -102,7 +102,7 @@
</tr> </tr>
<tr> <tr>
<td>GET</td> <td>GET</td>
<td>Read</td> <td>Read/Retrieve</td>
<td>200 (OK), list of customers. Use pagination, sorting and filtering to navigate big lists.</td> <td>200 (OK), list of customers. Use pagination, sorting and filtering to navigate big lists.</td>
<td>200 (OK), single customer. 404 (Not Found), if ID not found or invalid.</td> <td>200 (OK), single customer. 404 (Not Found), if ID not found or invalid.</td>
</tr> </tr>
@ -203,14 +203,14 @@
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.RestApiTutorial.com" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p> <p><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="https://creativecommons.org/ns#" href="https://www.RestApiTutorial.com" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
</footer> </footer>
</div> <!-- /container --> </div> <!-- /container -->
<div class="navbar navbar-fixed-top"> <div class="navbar navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a> <a class="brand" href="https://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li><a href="../index.html">Home</a></li> <li><a href="../index.html">Home</a></li>

View File

@ -87,7 +87,7 @@
</div> </div>
<div id="video1" class="row collapse in"> <div id="video1" class="row collapse in">
<div class="span12"> <div class="span12">
<iframe width="853" height="480" src="http://www.youtube.com/embed/6dVNdFwqeKs" frameborder="0" allowfullscreen></iframe> <iframe width="853" height="480" src="https://www.youtube.com/embed/6dVNdFwqeKs" frameborder="0" allowfullscreen></iframe>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -103,14 +103,14 @@
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p> <p><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="https://creativecommons.org/ns#" href="https://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
</footer> </footer>
</div> <!-- /container --> </div> <!-- /container -->
<div class="navbar navbar-fixed-top"> <div class="navbar navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a> <a class="brand" href="https://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li><a href="../index.html">Home</a></li> <li><a href="../index.html">Home</a></li>

View File

@ -133,7 +133,7 @@
<p>Look at some widely used APIs to get the hang of this and leverage the intuition of your teammates to refine your API resource URIs. Some example APIs are:</p> <p>Look at some widely used APIs to get the hang of this and leverage the intuition of your teammates to refine your API resource URIs. Some example APIs are:</p>
<ul> <ul>
<li>Twitter: https://developer.twitter.com/en/docs/api-reference-index</li> <li>Twitter: https://developer.twitter.com/en/docs/api-reference-index</li>
<li>Facebook: http://developers.facebook.com/docs/reference/api/</li> <li>Facebook: https://developers.facebook.com/docs/reference/api/</li>
<li>LinkedIn: https://developer.linkedin.com/apis</li> <li>LinkedIn: https://developer.linkedin.com/apis</li>
</ul> </ul>
</div> </div>
@ -176,14 +176,14 @@
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p> <p><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="https://creativecommons.org/ns#" href="https://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
</footer> </footer>
</div> <!-- /container --> </div> <!-- /container -->
<div class="navbar navbar-fixed-top"> <div class="navbar navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a> <a class="brand" href="https://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li><a href="../index.html">Home</a></li> <li><a href="../index.html">Home</a></li>

View File

@ -119,7 +119,7 @@
</ul> </ul>
</p> </p>
<h2>Use HTTP Response Codes to Indicate Status</h2> <h2>Use HTTP Response Codes to Indicate Status</h2>
<p>Response status codes are part of the HTTP specification. There are quite a number of them to address the most common situations. In the spirit of having our RESTful services embrace the HTTP specification, our Web APIs should return relevant HTTP status codes. For example, when a resource is successfully created (e.g. from a POST request), the API should return HTTP status code 201. A list of valid <a href="http://www.restapitutorial.com/httpstatuscodes.html">HTTP status codes</a> is available <a href="http://www.restapitutorial.com/httpstatuscodes.html">here</a> which lists detailed descriptions of each.</p> <p>Response status codes are part of the HTTP specification. There are quite a number of them to address the most common situations. In the spirit of having our RESTful services embrace the HTTP specification, our Web APIs should return relevant HTTP status codes. For example, when a resource is successfully created (e.g. from a POST request), the API should return HTTP status code 201. A list of valid <a href="https://www.restapitutorial.com/httpstatuscodes.html">HTTP status codes</a> is available <a href="https://www.restapitutorial.com/httpstatuscodes.html">here</a> which lists detailed descriptions of each.</p>
<p>Suggested usages for the &quot;Top 10&quot; HTTP Response Status Codes are as follows: <p>Suggested usages for the &quot;Top 10&quot; HTTP Response Status Codes are as follows:
<dl> <dl>
<dt>200 OK</dt> <dt>200 OK</dt>
@ -148,15 +148,15 @@
<p>Favor JSON support unless you're in a highly-standardized and regulated industry that requires XML, schema validation and namespaces, and offer both JSON and XML unless the costs are staggering. Ideally, let consumers switch between formats using the HTTP Accept header, or by just changing an extension from .xml to .json on the URL.</p> <p>Favor JSON support unless you're in a highly-standardized and regulated industry that requires XML, schema validation and namespaces, and offer both JSON and XML unless the costs are staggering. Ideally, let consumers switch between formats using the HTTP Accept header, or by just changing an extension from .xml to .json on the URL.</p>
<p>Be aware that as soon as we start talking about XML support, we start talking about schemas for validation, namespaces, etc. Unless required by your industry, avoid supporting all that complexity initially, if ever. JSON is designed to be simple, terse and functional. Make your XML look like that if you can.</p> <p>Be aware that as soon as we start talking about XML support, we start talking about schemas for validation, namespaces, etc. Unless required by your industry, avoid supporting all that complexity initially, if ever. JSON is designed to be simple, terse and functional. Make your XML look like that if you can.</p>
<p>In other words, make the XML that is returned more JSON-like &mdash; simple and easy to read, without the schema and namespace details present, just data and links. If it ends up being more complex than this, the cost of XML will be staggering. In my experience no one has used XML responses anyway for the last several years, it's just too expensive to consume.</p> <p>In other words, make the XML that is returned more JSON-like &mdash; simple and easy to read, without the schema and namespace details present, just data and links. If it ends up being more complex than this, the cost of XML will be staggering. In my experience no one has used XML responses anyway for the last several years, it's just too expensive to consume.</p>
<p>Note that <a href="http://json-schema.org/">JSON-Schema</a> offers schema-style validation capabilities, if you need that sort of thing.</p> <p>Note that <a href="https://json-schema.org/">JSON-Schema</a> offers schema-style validation capabilities, if you need that sort of thing.</p>
<h2>Create Fine-Grained Resources</h2> <h2>Create Fine-Grained Resources</h2>
<p>When starting out, it's best to create APIs that mimic the underlying application domain or database architecture of your system. Eventually, you'll want aggregate services that utilize multiple underlying resources to reduce chattiness. However, it's much easier to create larger resources later from individual resources than it is to create fine-grained or individual resources from larger aggregates. Make it easy on yourself and start with small, easily defined resources, providing CRUD functionality on those. You can create those use-case-oriented, chattiness-reducing resources later.</p> <p>When starting out, it's best to create APIs that mimic the underlying application domain or database architecture of your system. Eventually, you'll want aggregate services that utilize multiple underlying resources to reduce chattiness. However, it's much easier to create larger resources later from individual resources than it is to create fine-grained or individual resources from larger aggregates. Make it easy on yourself and start with small, easily defined resources, providing CRUD functionality on those. You can create those use-case-oriented, chattiness-reducing resources later.</p>
<h2>Consider Connectedness</h2> <h2>Consider Connectedness</h2>
<p>One of the principles of REST is connectedness—via hypermedia links (search HATEOAS). While services are still useful without them, APIs become more self-descriptive and discoverable when links are returned in the response. At the very least, a 'self' link reference informs clients how the data was or can be retrieved. Additionally, utilize the HTTP Location header to contain a link on resource creation via POST (or PUT). For collections returned in a response that support pagination, 'first', 'last', 'next' and 'prev' links at a minimum are very helpful.</p> <p>One of the principles of REST is connectedness—via hypermedia links (search HATEOAS). While services are still useful without them, APIs become more self-descriptive and discoverable when links are returned in the response. At the very least, a 'self' link reference informs clients how the data was or can be retrieved. Additionally, utilize the HTTP Location header to contain a link on resource creation via POST (or PUT). For collections returned in a response that support pagination, 'first', 'last', 'next' and 'prev' links at a minimum are very helpful.</p>
<p>Regarding linking formats, there are many. The HTTP Web Linking Specification (<a href="http://tools.ietf.org/search/rfc5988">RFC5988</a>) explains a link as follows: <p>Regarding linking formats, there are many. The HTTP Web Linking Specification (<a href="https://tools.ietf.org/search/rfc5988">RFC5988</a>) explains a link as follows:
<blockquote>a link is a typed connection between two <blockquote>a link is a typed connection between two
resources that are identified by Internationalised Resource resources that are identified by Internationalised Resource
Identifiers (IRIs) [<a href="http://tools.ietf.org/search/rfc3987">RFC3987</a>], and is comprised of: Identifiers (IRIs) [<a href="https://tools.ietf.org/search/rfc3987">RFC3987</a>], and is comprised of:
<ul> <ul>
<li>A context IRI,</li> <li>A context IRI,</li>
<li>a link relation type</li> <li>a link relation type</li>
@ -166,19 +166,19 @@
A link can be viewed as a statement of the form &quot;{context IRI} has a A link can be viewed as a statement of the form &quot;{context IRI} has a
{relation type} resource at {target IRI}, which has {target {relation type} resource at {target IRI}, which has {target
attributes}.&quot;</blockquote></p> attributes}.&quot;</blockquote></p>
<p>At the very least, place links in the HTTP Link header as recommended in the specification, or embrace a JSON representation of this HTTP link style (such as Atom-style links, see: <a href="http://tools.ietf.org/search/rfc4287#section-4.2.7">RFC4287</a>) in your JSON representations. Later, you can layer in more complex linking styles such as <a href="http://stateless.co/hal_specification.html">HAL+JSON</a>, <a href="https://github.com/kevinswiber/siren">Siren</a>, <a href="http://amundsen.com/media-types/collection/">Collection+JSON</a>, and/or <a href="http://json-ld.org/">JSON-LD</a>, etc. as your REST APIs become more mature.</p> <p>At the very least, place links in the HTTP Link header as recommended in the specification, or embrace a JSON representation of this HTTP link style (such as Atom-style links, see: <a href="https://tools.ietf.org/search/rfc4287#section-4.2.7">RFC4287</a>) in your JSON representations. Later, you can layer in more complex linking styles such as <a href="https://stateless.co/hal_specification.html">HAL+JSON</a>, <a href="https://github.com/kevinswiber/siren">Siren</a>, <a href="https://amundsen.com/media-types/collection/">Collection+JSON</a>, and/or <a href="https://json-ld.org/">JSON-LD</a>, etc. as your REST APIs become more mature.</p>
</div> </div>
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p> <p><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="https://creativecommons.org/ns#" href="https://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
</footer> </footer>
</div> <!-- /container --> </div> <!-- /container -->
<div class="navbar navbar-fixed-top"> <div class="navbar navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a> <a class="brand" href="https://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li><a href="../index.html">Home</a></li> <li><a href="../index.html">Home</a></li>

View File

@ -87,12 +87,12 @@
</div> </div>
<div id="video1" class="row collapse in"> <div id="video1" class="row collapse in">
<div class="span12"> <div class="span12">
<iframe width="853" height="480" src="http://www.youtube.com/embed/llpr5924N7E" frameborder="0" allowfullscreen></iframe> <iframe width="853" height="480" src="https://www.youtube.com/embed/llpr5924N7E" frameborder="0" allowfullscreen></iframe>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="span12"> <div class="span12">
<p>The REST architectural style describes six constraints. These constraints, applied to the architecture, were originally communicated by Roy Fielding in his doctoral dissertation (see <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" target="_blank">http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm</a>) and defines the basis of RESTful-style.</p> <p>The REST architectural style describes six constraints. These constraints, applied to the architecture, were originally communicated by Roy Fielding in his doctoral dissertation (see <a href="https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" target="_blank">https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm</a>) and defines the basis of RESTful-style.</p>
<p><strong>The six constraints are: (click the constraint to read more)</strong></p> <p><strong>The six constraints are: (click the constraint to read more)</strong></p>
<ul id="constraint-accordian"> <ul id="constraint-accordian">
<li><a data-toggle="collapse" data-target="#uniform-interface" data-parent="#constraint-accordian" href="#">Uniform Interface</a> <li><a data-toggle="collapse" data-target="#uniform-interface" data-parent="#constraint-accordian" href="#">Uniform Interface</a>
@ -145,14 +145,14 @@
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p> <p><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="https://creativecommons.org/ns#" href="https://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
</footer> </footer>
</div> <!-- /container --> </div> <!-- /container -->
<div class="navbar navbar-fixed-top"> <div class="navbar navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a> <a class="brand" href="https://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li><a href="../index.html">Home</a></li> <li><a href="../index.html">Home</a></li>

View File

@ -69,7 +69,7 @@
<h1>REST API Resources</h1> <h1>REST API Resources</h1>
<h2>Translations</h2> <h2>Translations</h2>
<dl> <dl>
<dt><a href="http://www.restapitutorial.ru/">Russian</a></dt> <dt><a href="https://www.restapitutorial.ru/">Russian</a></dt>
<dd><a href="http://www.restapitutorial.ru/">http://www.restapitutorial.ru/</a></dd> <dd><a href="http://www.restapitutorial.ru/">http://www.restapitutorial.ru/</a></dd>
</dl> </dl>
<h2>REST API Cheat Sheets</h2> <h2>REST API Cheat Sheets</h2>
@ -78,7 +78,7 @@
<li><a href="https://github.com/RestCheatSheet/platform-cheat-sheet#platform-building-cheat-sheet">Platform-Building Cheat Sheet</a> - Everyone wants to build a platform. This GitHub repository is a public receptical of ground rules when building a platform.</li> <li><a href="https://github.com/RestCheatSheet/platform-cheat-sheet#platform-building-cheat-sheet">Platform-Building Cheat Sheet</a> - Everyone wants to build a platform. This GitHub repository is a public receptical of ground rules when building a platform.</li>
</ul> </ul>
<h2>REST API Best Practices</h2> <h2>REST API Best Practices</h2>
<p>Get the <em>RESTful Best Practices</em> guide (choose your format). This guide reduces the world of RESTful services into easy-to-follow principles. It also provides several cookbook type recipes in critical areas to increase service usability, reduce confusion during implemenation, as well as improve consistency.</p> <p>Get the <em>RESTful Design Best Practices</em> guide (choose your format). This guide reduces the world of RESTful services design into easy-to-follow principles. It also provides several cookbook type recipes in critical areas to increase service usability, reduce confusion during implemenation, as well as improve consistency.</p>
<ul> <ul>
<li><a href="https://github.com/tfredrich/RestApiTutorial.com/raw/master/media/RESTful%20Best%20Practices-v1_2.pdf">PDF</a> (~306KB)</li> <li><a href="https://github.com/tfredrich/RestApiTutorial.com/raw/master/media/RESTful%20Best%20Practices-v1_2.pdf">PDF</a> (~306KB)</li>
<li><a href="https://github.com/tfredrich/RestApiTutorial.com/raw/master/media/RESTful%20Best%20Practices-v1_2.epub">ePub</a> (~46KB). Works on iPad, iPhone, B&amp;N Nook and most other readers.</li> <li><a href="https://github.com/tfredrich/RestApiTutorial.com/raw/master/media/RESTful%20Best%20Practices-v1_2.epub">ePub</a> (~46KB). Works on iPad, iPhone, B&amp;N Nook and most other readers.</li>
@ -86,27 +86,28 @@
<li><a href="https://github.com/tfredrich/RestApiTutorial.com/raw/master/media/RESTful%20Best%20Practices-v1_2.odt">Source Document in Libre/Open Office format</a> (~48KB)</li> <li><a href="https://github.com/tfredrich/RestApiTutorial.com/raw/master/media/RESTful%20Best%20Practices-v1_2.odt">Source Document in Libre/Open Office format</a> (~48KB)</li>
</ul> </ul>
<h2>Building REST APIs in Java</h2> <h2>Building REST APIs in Java</h2>
<p><a href="https://github.com/RestExpress/RestExpress">RestExpress</a> (GitHub). A microservices framework for Java, RestExpress composes best-of-breed tools to form a lightweight, minimalist Java framework for quickly creating RESTful APIs.</p> <p><a href="https://github.com/RestExpress/RestExpress">RestExpress</a> (GitHub). A lightweight microservices framework for Java, RestExpress composes best-of-breed tools to form a lightweight, minimalist Java framework for quickly creating RESTful APIs.</p>
<h2>Web Resources</h2> <h2>Web Resources</h2>
<ul> <ul>
<li><a href="http://www.youtube.com/user/restapitutorial">REST API Tutorial YouTube Channel</a></li> <li><a href="https://www.youtube.com/user/restapitutorial">REST API Tutorial YouTube Channel</a> - The companion channel where all of the videos for this site live.</li>
<li><a href="https://www.youtube.com/channel/UCBSlXL7WCE-MR8uuwurqVKA">Sascha Preibisch YouTube Channel</a> - A great resource on Security; Particularly Oauth2 and OpenID Connect (OIDC).</li>
<li><a href="http://www.toddfredrich.com">Todd Fredrich's Blog</a></li> <li><a href="http://www.toddfredrich.com">Todd Fredrich's Blog</a></li>
</ul> </ul>
</div> </div>
</div> </div>
<hr> <hr>
<footer> <footer>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p> <p><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="https://creativecommons.org/ns#" href="https://www.restapitutorial.com/" property="cc:attributionName" rel="cc:attributionURL">RestApiTutorial.com</a> is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
</footer> </footer>
</div> <!-- /container --> </div> <!-- /container -->
<div class="navbar navbar-fixed-top"> <div class="navbar navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a> <a class="brand" href="https://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li><a href="http://www.restapitutorial.com">Home</a></li> <li><a href="https://www.restapitutorial.com">Home</a></li>
<li class="dropdown" id="api-school"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a> <li class="dropdown" id="api-school"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="lessons/whatisrest.html">What Is REST?</a></li> <li><a href="lessons/whatisrest.html">What Is REST?</a></li>

View File

@ -1,6 +1,20 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<!-- Google Analytics Content Experiment code -->
<script>function utmx_section(){}function utmx(){}(function(){var
k='59305729-0',d=document,l=d.location,c=d.cookie;
if(l.search.indexOf('utm_expid='+k)>0)return;
function f(n){if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.
indexOf(';',i);return escape(c.substring(i+n.length+1,j<0?c.
length:j))}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;d.write(
'<sc'+'ript src="'+'http'+(l.protocol=='https:'?'s://ssl':
'://www')+'.google-analytics.com/ga_exp.js?'+'utmxkey='+k+
'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='+new Date().
valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+
'" type="text/javascript" charset="utf-8"><\/sc'+'ript>')})();
</script><script>utmx('url','A/B');</script>
<!-- End of Google Analytics Content Experiment code -->
<meta charset="utf-8"> <meta charset="utf-8">
<title>REST API Questions</title> <title>REST API Questions</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -9,20 +23,22 @@
<!-- Le styles --> <!-- Le styles -->
<link href="https://maxcdn.bootstrapcdn.com/twitter-bootstrap/2.0.4/css/bootstrap-combined.min.css" rel="stylesheet"> <link href="https://maxcdn.bootstrapcdn.com/twitter-bootstrap/2.0.4/css/bootstrap-combined.min.css" rel="stylesheet">
<link href="//cdn-images.mailchimp.com/embedcode/classic-10_7.css" rel="stylesheet" type="text/css"> <link href="//cdn-images.mailchimp.com/embedcode/classic-10_7.css" rel="stylesheet" type="text/css">
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style type="text/css"> <style type="text/css">
body { body {
padding-top: 60px; padding-top: 60px;
padding-bottom: 40px; padding-bottom: 40px;
} }
#mc_embed_signup{background:#ccc; clear:left; padding: 15px; border-radius: 25px; font:14px Helvetica,Arial,sans-serif; } .banner-container {
}
#mc_embed_signup{background:#8ac; clear:left; padding: 15px; border-radius: 25px; font:14px Helvetica,Arial,sans-serif; }
div.mc-field-group.input-group label{display:inline; margin-left: 10px; } div.mc-field-group.input-group label{display:inline; margin-left: 10px; }
#mce-QUESTION1{width: 80%; height: 3em;} #mce-QUESTION1{width: 80%; height: 3em;}
#mce-QUESTION2{width: 80%; height: 3em; } #mce-QUESTION2{width: 80%; height: 3em; }
</style> </style>
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript"> <script type="text/javascript">
var _gaq = _gaq || []; var _gaq = _gaq || [];
@ -61,7 +77,7 @@
<h2>What's Your Most Burning REST API Question?</h2> <h2>What's Your Most Burning REST API Question?</h2>
<p><strong>Hey Fellow REST-afarian!</strong></p> <p><strong>Hey Fellow REST-afarian!</strong></p>
<p>I'm creating a FREE Webinar about REST API Design and want to answer your most-pressing REST API question.</p> <p>I'm creating a FREE Webinar about REST API Design and want to answer your most-pressing REST API question.</p>
<p>Enter your question in the form to the right, along with your email address and I'll answer your questions via the Webinar!</p> <p>Enter your question in the form to the right, along with your email address and I'll answer your questions via the Webinar.</p>
<p>REST well,<br> <p>REST well,<br>
Todd Fredrich, <em>The REST API Tutor<em></p> Todd Fredrich, <em>The REST API Tutor<em></p>
</div> </div>
@ -121,10 +137,10 @@
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<a class="brand" href="http://www.restapitutorial.com">REST API Tutorial</a> <a class="brand" href="https://www.restapitutorial.com">REST API Tutorial</a>
<div class="nav-collapse"> <div class="nav-collapse">
<ul class="nav"> <ul class="nav">
<li><a href="http://www.restapitutorial.com">Home</a></li> <li><a href="https://www.restapitutorial.com">Home</a></li>
<li class="dropdown" id="api-school"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a> <li class="dropdown" id="api-school"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="lessons/whatisrest.html">What Is REST?</a></li> <li><a href="lessons/whatisrest.html">What Is REST?</a></li>

View File

@ -1,7 +1,7 @@
<html> <html>
<head> <head>
<title>Moved to new URL: http://www.restapitutorial.com/lessons/restquicktips.html</title> <title>Moved to new URL: https://www.restapitutorial.com/lessons/restquicktips.html</title>
<meta http-equiv=refresh content="0; url=http://www.restapitutorial.com/lessons/restquicktips.html" /> <meta http-equiv=refresh content="0; url=https://www.restapitutorial.com/lessons/restquicktips.html" />
<meta name="robots" content="noindex,follow" /> <meta name="robots" content="noindex,follow" />
<!-- Facebook Pixel Code --> <!-- Facebook Pixel Code -->
<script> <script>
@ -22,9 +22,9 @@
<!-- End Facebook Pixel Code --> <!-- End Facebook Pixel Code -->
</head> </head>
<body> <body>
<h1>This page has been moved to http://www.restapitutorial.com/lessons/restquicktips.html</h1> <h1>This page has been moved to https://www.restapitutorial.com/lessons/restquicktips.html</h1>
<p>If your browser doesn't redirect you to the new location please <p>If your browser doesn't redirect you to the new location please
<a href="http://www.restapitutorial.com/lessons/restquicktips.html"><strong>click here</strong></a>, <a href="https://www.restapitutorial.com/lessons/restquicktips.html"><strong>click here</strong></a>,
sorry for the hassles!</p> sorry for the hassles!</p>
</body> </body>
</html> </html>

View File

@ -1,43 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<urlset <urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> https://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url> <url>
<loc>http://www.restapitutorial.com/</loc> <loc>https://www.restapitutorial.com/</loc>
<lastmod>2017-09-12T12:55:39+00:00</lastmod> <lastmod>2018-07-03T12:55:39+00:00</lastmod>
</url> </url>
<url> <url>
<loc>http://www.restapitutorial.com/lessons/whatisrest.html</loc> <loc>https://www.restapitutorial.com/lessons/whatisrest.html</loc>
<lastmod>2015-01-14T12:55:39+00:00</lastmod> <lastmod>2015-01-14T12:55:39+00:00</lastmod>
</url> </url>
<url> <url>
<loc>http://www.restapitutorial.com/lessons/restquicktips.html</loc> <loc>https://www.restapitutorial.com/lessons/restquicktips.html</loc>
<lastmod>2017-12-29T21:54:09+07:00</lastmod> <lastmod>2017-12-29T21:54:09+07:00</lastmod>
</url> </url>
<url> <url>
<loc>http://www.restapitutorial.com/lessons/httpmethods.html</loc> <loc>https://www.restapitutorial.com/lessons/httpmethods.html</loc>
<lastmod>2017-05-12T12:55:39+00:00</lastmod> <lastmod>2017-05-12T12:55:39+00:00</lastmod>
</url> </url>
<url> <url>
<loc>http://www.restapitutorial.com/lessons/restfulresourcenaming.html</loc> <loc>https://www.restapitutorial.com/lessons/restfulresourcenaming.html</loc>
<lastmod>2017-12-29T12:55:39+00:00</lastmod> <lastmod>2017-12-29T12:55:39+00:00</lastmod>
</url> </url>
<url> <url>
<loc>http://www.restapitutorial.com/lessons/idempotency.html</loc> <loc>https://www.restapitutorial.com/lessons/idempotency.html</loc>
<lastmod>2015-02-14T12:55:39+00:00</lastmod> <lastmod>2015-02-14T12:55:39+00:00</lastmod>
</url> </url>
<url> <url>
<loc>http://www.restapitutorial.com/httpstatuscodes.html</loc> <loc>https://www.restapitutorial.com/httpstatuscodes.html</loc>
<lastmod>2017-05-12T12:55:39+00:00</lastmod> <lastmod>2017-05-12T12:55:39+00:00</lastmod>
</url> </url>
<url> <url>
<loc>http://www.restapitutorial.com/resources.html</loc> <loc>https://www.restapitutorial.com/resources.html</loc>
<lastmod>2015-02-14T12:55:39+00:00</lastmod> <lastmod>2021-01-05T12:55:39+00:00</lastmod>
</url> </url>
<url> <url>
<loc>http://www.restapitutorial.com/index.html</loc> <loc>https://www.restapitutorial.com/index.html</loc>
<lastmod>2017-12-29T12:55:39+00:00</lastmod> <lastmod>2018-07-03T12:55:39+00:00</lastmod>
</url>
<url>
<loc>https://www.restapitutorial.com/restapiwebinar.html</loc>
<lastmod>2018-06-10T12:55:39+00:00</lastmod>
</url> </url>
</urlset> </urlset>