request-response-format.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. In der momentanen Version gibt der POST-Request auf "/getshm" eine lineare
  2. Tabelle von Werten zurück. Der Request hat entweder das gewohnte Format, d.
  3. h. es wird ein Request-Objetkt an den Server gesendet, oder (neu!) es kann
  4. auch ein Array aus Request-Objekten gesendet werden.
  5. /////////////////////////////////////////////////////////////////////////////
  6. Beispiel Objekt:
  7. {
  8. "path": "/Anlage_Allgemein_Konfig_Daten/K_Anlagen_Name",
  9. "cookie": "idValues1"
  10. }
  11. Beispiel Array:
  12. [
  13. {
  14. "path": "/Anlage_Allgemein_Konfig_Daten/K_Anlagen_Name",
  15. "cookie": "idValues1"
  16. },
  17. {
  18. "path": "/Anlage_Allgemein_Konfig_Daten/K_Email_Adresse_An[125]",
  19. "cookie": "idValues2"
  20. },
  21. {
  22. "path": "/Anlage_Allgemein_Konfig_Daten/PID_Regler_P",
  23. "cookie": "idValues3"
  24. }
  25. ]
  26. /////////////////////////////////////////////////////////////////////////////
  27. Antwort auf Objekt-Request:
  28. {
  29. "uuid": "6f58640d-9fb4-44e4-b2d3-a5e3125f9e26",
  30. "request": [
  31. {
  32. "path": "/Anlage_Allgemein_Konfig_Daten/K_Anlagen_Name",
  33. "cookie": "idValues1"
  34. }
  35. ],
  36. "response": [
  37. {
  38. "responseType": 0,
  39. "requestIndex": 0,
  40. "valName": "K_Anlagen_Name",
  41. "valType": 2,
  42. "path": "/Anlage_Allgemein_Konfig_Daten/K_Anlagen_Name",
  43. "index": -1,
  44. "value": "Monty Python's Flyin"
  45. }
  46. ]
  47. }
  48. Antwort auf Array-Request:
  49. {
  50. "uuid": "6f58640d-9fb4-44e4-b2d3-a5e3125f9e26",
  51. "request": [
  52. {
  53. "path": "/Anlage_Allgemein_Konfig_Daten/K_Anlagen_Name",
  54. "cookie": "idValues1"
  55. },
  56. {
  57. "path": "/Anlage_Allgemein_Konfig_Daten/K_Email_Adresse_An[125]",
  58. "cookie": "idValues2"
  59. },
  60. {
  61. "path": "/Anlage_Allgemein_Konfig_Daten/PID_Regler_P",
  62. "cookie": "idValues3"
  63. }
  64. ],
  65. "response": [
  66. {
  67. "responseType": 0,
  68. "requestIndex": 0,
  69. "valName": "K_Anlagen_Name",
  70. "valType": 2,
  71. "path": "/Anlage_Allgemein_Konfig_Daten/K_Anlagen_Name",
  72. "index": -1,
  73. "value": "Monty Python's Flyin"
  74. },
  75. {
  76. "responseType": 1,
  77. "requestIndex": 1,
  78. "message": "Invalid path!",
  79. "code": -1,
  80. "path": "/Anlage_Allgemein_Konfig_Daten/K_Email_Adresse_An[125]"
  81. },
  82. {
  83. "responseType": 0,
  84. "requestIndex": 2,
  85. "valName": "PID_Regler_P",
  86. "valType": 4,
  87. "path": "/Anlage_Allgemein_Konfig_Daten/PID_Regler_P",
  88. "index": -1,
  89. "value": 123.456
  90. }
  91. ]
  92. }
  93. Zu beachten ist, dass die Elemente "request" und "response" in beiden Fällen
  94. Arrays sind, im Fall eines Einzel-Requests mit nur einem Element!
  95. Die Objekte im response-Array können 2 unterschiedliche Typen sein.
  96. Unterscheiden lässt sich der Typ am Member "responseType", das in jedem Fall
  97. vorhanden ist.
  98. responseType : 0 => es handelt sich um ein Wert-Objekt, das die gewünschte
  99. Variable zurückgibt.
  100. responseType : 1 => es handelt sich um ein Status-Objekt, das im Fehlerfall
  101. zurückgegeben wird.
  102. Das Wert-Objekt hat nun zu bereits bekannten Members noch folgndes:
  103. requestIndex: gibt den Index des korrespondierenden Requests im
  104. request-Array an.
  105. Das Status-Objekt enthält nun ebenfalls die Members requestIndex und path.
  106. Somit enthalten beide Objekte immer folgende Members:
  107. responseType
  108. requestIndex
  109. path
  110. /////////////////////////////////////////////////////////////////////////////
  111. Dieser Aufbau gilt sinngemäss nun auch für "/setshm"! Hier werden zwar
  112. keine Werte zurückgegeben, d. h. "responseType" ist immer 1, aber die
  113. Status-Objekte sind nun zwecks Konsistenz auch in das response-Array
  114. gewandert und haben das selbe Format! Auch hier kann der Request entweder
  115. ein Objekt oder ein Array aus diesen Objekten sein!
  116. Beispiel Request:
  117. [
  118. {
  119. "path": "/Anlage_Allgemein_Konfig_Daten/K_Anlagen_Name",
  120. "value": "Monty Python's Flying Circus",
  121. "cookie": "idValues1"
  122. },
  123. {
  124. "path": "/Anlage_Allgemein_Konfig_Daten/K_Email_Adresse_An[125]",
  125. "value": "Blah blah bluh!",
  126. "cookie": "idValues2"
  127. },
  128. {
  129. "path": "/Anlage_Allgemein_Konfig_Daten/PID_Regler_P",
  130. "value": 123.456,
  131. "cookie": "idValues3"
  132. },
  133. {
  134. "path": "/Stall_Konfig_Daten[3]",
  135. "value": 1,
  136. "cookie": "idValues4"
  137. }
  138. ]
  139. Beispiel Response:
  140. {
  141. "uuid": "6f58640d-9fb4-44e4-b2d3-a5e3125f9e26",
  142. "request": [
  143. {
  144. "path": "/Anlage_Allgemein_Konfig_Daten/K_Anlagen_Name",
  145. "cookie": "idValues1",
  146. "value": "Monty Python's Flying Circus"
  147. },
  148. {
  149. "path": "/Anlage_Allgemein_Konfig_Daten/K_Email_Adresse_An[125]",
  150. "cookie": "idValues2",
  151. "value": "Blah blah bluh!"
  152. },
  153. {
  154. "path": "/Anlage_Allgemein_Konfig_Daten/PID_Regler_P",
  155. "cookie": "idValues3",
  156. "value": 123.456
  157. },
  158. {
  159. "path": "/Stall_Konfig_Daten[3]",
  160. "cookie": "idValues4",
  161. "value": 1
  162. }
  163. ],
  164. "response": [
  165. {
  166. "message": "",
  167. "responseType": 1,
  168. "requestIndex": 0,
  169. "code": 0,
  170. "path": "/Anlage_Allgemein_Konfig_Daten/K_Anlagen_Name"
  171. },
  172. {
  173. "message": "Invalid path!",
  174. "responseType": 1,
  175. "requestIndex": 1,
  176. "code": -1,
  177. "path": "/Anlage_Allgemein_Konfig_Daten/K_Email_Adresse_An[125]"
  178. },
  179. {
  180. "message": "",
  181. "responseType": 1,
  182. "requestIndex": 2,
  183. "code": 0,
  184. "path": "/Anlage_Allgemein_Konfig_Daten/PID_Regler_P"
  185. },
  186. {
  187. "message": "Cannot assign a value to an object!",
  188. "responseType": 1,
  189. "requestIndex": 3,
  190. "code": -1,
  191. "path": "/Stall_Konfig_Daten[3]"
  192. }
  193. ]
  194. }
  195. /////////////////////////////////////////////////////////////////////////////
  196. Achtung: HTTP-Statuscodes != 200 werden jetzt nur mehr zurückgegeben, wenn
  197. der Request fehlerhaft ist. Bei einem ungültigen Pfad gibt der Server 200
  198. zurück und liefert das entsprechende Status-Objekt!