2.1.restful.md.html 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta http-equiv="Content-Style-Type" content="text/css" />
  6. <meta name="generator" content="pandoc" />
  7. <title></title>
  8. <style type="text/css">code{white-space: pre;}</style>
  9. <link rel="stylesheet" href="css/vendor.css" type="text/css" />
  10. </head>
  11. <body>
  12. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wb="http://open.weibo.com/wb" >
  13. <head>
  14. <title>一步步搭建物联网系统(教你设计物联网系统)</title>
  15. <meta name="keywords" content="设计物联网系统,物联网系统设计">
  16. <meta name="description" content="一份关于如何设计物联网系统的文档">
  17. <link rel="stylesheet" href="../css/vendor.css" />
  18. </head>
  19. <body class="container inner wrap">
  20. <h1>一步步搭建物联网系统(教你设计物联网系统)</h1>
  21. </body>
  22. </html>
  23. <div id="TOC">
  24. <ul>
  25. <li><a href="#设计restful-api"><span class="toc-section-number">1</span> 设计RESTful API</a><ul>
  26. <li><a href="#资源"><span class="toc-section-number">1.0.1</span> 资源</a></li>
  27. <li><a href="#设计restful-api-1"><span class="toc-section-number">1.1</span> 设计RESTful API</a></li>
  28. <li><a href="#rest关键目标"><span class="toc-section-number">1.2</span> REST关键目标</a></li>
  29. <li><a href="#判断是否是-restful的约束条件"><span class="toc-section-number">1.3</span> 判断是否是 RESTful的约束条件</a></li>
  30. <li><a href="#json"><span class="toc-section-number">1.4</span> JSON</a></li>
  31. </ul></li>
  32. </ul>
  33. </div>
  34. <h1 id="设计restful-api"><span class="header-section-number">1</span> 设计RESTful API</h1>
  35. <blockquote>
  36. <p>REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移。</p>
  37. </blockquote>
  38. <p>因为我们需要的是一个Machine到Machine沟通的平台,需要设计一个API。而设计一个API来说,RESTful是很不错的一种选择,也是主流的选择。而设计一个RESTful服务,的首要步骤便是设计资源模型。</p>
  39. <h3 id="资源"><span class="header-section-number">1.0.1</span> 资源</h3>
  40. <p>互联网上的一切信息都可以看作是一种资源。</p>
  41. <table>
  42. <thead>
  43. <tr class="header">
  44. <th align="left">HTTP Method</th>
  45. <th align="left">Operation Performed</th>
  46. </tr>
  47. </thead>
  48. <tbody>
  49. <tr class="odd">
  50. <td align="left">GET</td>
  51. <td align="left">Get a resource (Read a resource)</td>
  52. </tr>
  53. <tr class="even">
  54. <td align="left">POST</td>
  55. <td align="left">Create a resource</td>
  56. </tr>
  57. <tr class="odd">
  58. <td align="left">PUT</td>
  59. <td align="left">Update a resource</td>
  60. </tr>
  61. <tr class="even">
  62. <td align="left">DELETE</td>
  63. <td align="left">Delete Resource</td>
  64. </tr>
  65. </tbody>
  66. </table>
  67. <h2 id="设计restful-api-1"><span class="header-section-number">1.1</span> 设计RESTful API</h2>
  68. <p>设计RESTful API是一个有意思的话题。下面是一些常用的RESTful设计原则:</p>
  69. <h2 id="rest关键目标"><span class="header-section-number">1.2</span> REST关键目标</h2>
  70. <ul>
  71. <li>组件间交互的可伸缩性</li>
  72. <li>接口的通用性</li>
  73. <li>组件的独立部署</li>
  74. <li>通过中间组件来减少延迟、实施安全策略和封装已有系统</li>
  75. </ul>
  76. <h2 id="判断是否是-restful的约束条件"><span class="header-section-number">1.3</span> 判断是否是 RESTful的约束条件</h2>
  77. <ul>
  78. <li>客户端-服务器分离</li>
  79. <li>无状态</li>
  80. <li>可缓存</li>
  81. <li>多层系统</li>
  82. <li>统一接口</li>
  83. <li>随需代码(可选)</li>
  84. </ul>
  85. <h2 id="json"><span class="header-section-number">1.4</span> JSON</h2>
  86. <div class="figure">
  87. <img src="./images/xml-vs-json.png" alt="xml-vs-json" />
  88. <p class="caption">xml-vs-json</p>
  89. </div>
  90. </body>
  91. </html>