ghttp_client_api.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. // Copyright 2017 gf Author(https://github.com/gogf/gf). All Rights Reserved.
  2. //
  3. // This Source Code Form is subject to the terms of the MIT License.
  4. // If a copy of the MIT was not distributed with this file,
  5. // You can obtain one at https://github.com/gogf/gf.
  6. package ghttp
  7. import "github.com/gogf/gf/container/gvar"
  8. // Get is a convenience method for sending GET request.
  9. // NOTE that remembers CLOSING the response object when it'll never be used.
  10. func Get(url string, data ...interface{}) (*ClientResponse, error) {
  11. return DoRequest("GET", url, data...)
  12. }
  13. // Put is a convenience method for sending PUT request.
  14. // NOTE that remembers CLOSING the response object when it'll never be used.
  15. func Put(url string, data ...interface{}) (*ClientResponse, error) {
  16. return DoRequest("PUT", url, data...)
  17. }
  18. // Post is a convenience method for sending POST request.
  19. // NOTE that remembers CLOSING the response object when it'll never be used.
  20. func Post(url string, data ...interface{}) (*ClientResponse, error) {
  21. return DoRequest("POST", url, data...)
  22. }
  23. // Delete is a convenience method for sending DELETE request.
  24. // NOTE that remembers CLOSING the response object when it'll never be used.
  25. func Delete(url string, data ...interface{}) (*ClientResponse, error) {
  26. return DoRequest("DELETE", url, data...)
  27. }
  28. // Head is a convenience method for sending HEAD request.
  29. // NOTE that remembers CLOSING the response object when it'll never be used.
  30. func Head(url string, data ...interface{}) (*ClientResponse, error) {
  31. return DoRequest("HEAD", url, data...)
  32. }
  33. // Patch is a convenience method for sending PATCH request.
  34. // NOTE that remembers CLOSING the response object when it'll never be used.
  35. func Patch(url string, data ...interface{}) (*ClientResponse, error) {
  36. return DoRequest("PATCH", url, data...)
  37. }
  38. // Connect is a convenience method for sending CONNECT request.
  39. // NOTE that remembers CLOSING the response object when it'll never be used.
  40. func Connect(url string, data ...interface{}) (*ClientResponse, error) {
  41. return DoRequest("CONNECT", url, data...)
  42. }
  43. // Options is a convenience method for sending OPTIONS request.
  44. // NOTE that remembers CLOSING the response object when it'll never be used.
  45. func Options(url string, data ...interface{}) (*ClientResponse, error) {
  46. return DoRequest("OPTIONS", url, data...)
  47. }
  48. // Trace is a convenience method for sending TRACE request.
  49. // NOTE that remembers CLOSING the response object when it'll never be used.
  50. func Trace(url string, data ...interface{}) (*ClientResponse, error) {
  51. return DoRequest("TRACE", url, data...)
  52. }
  53. // DoRequest is a convenience method for sending custom http method request.
  54. // NOTE that remembers CLOSING the response object when it'll never be used.
  55. func DoRequest(method, url string, data ...interface{}) (*ClientResponse, error) {
  56. return NewClient().DoRequest(method, url, data...)
  57. }
  58. // GetContent is a convenience method for sending GET request, which retrieves and returns
  59. // the result content and automatically closes response object.
  60. func GetContent(url string, data ...interface{}) string {
  61. return RequestContent("GET", url, data...)
  62. }
  63. // PutContent is a convenience method for sending PUT request, which retrieves and returns
  64. // the result content and automatically closes response object.
  65. func PutContent(url string, data ...interface{}) string {
  66. return RequestContent("PUT", url, data...)
  67. }
  68. // PostContent is a convenience method for sending POST request, which retrieves and returns
  69. // the result content and automatically closes response object.
  70. func PostContent(url string, data ...interface{}) string {
  71. return RequestContent("POST", url, data...)
  72. }
  73. // DeleteContent is a convenience method for sending DELETE request, which retrieves and returns
  74. // the result content and automatically closes response object.
  75. func DeleteContent(url string, data ...interface{}) string {
  76. return RequestContent("DELETE", url, data...)
  77. }
  78. // HeadContent is a convenience method for sending HEAD request, which retrieves and returns
  79. // the result content and automatically closes response object.
  80. func HeadContent(url string, data ...interface{}) string {
  81. return RequestContent("HEAD", url, data...)
  82. }
  83. // PatchContent is a convenience method for sending PATCH request, which retrieves and returns
  84. // the result content and automatically closes response object.
  85. func PatchContent(url string, data ...interface{}) string {
  86. return RequestContent("PATCH", url, data...)
  87. }
  88. // ConnectContent is a convenience method for sending CONNECT request, which retrieves and returns
  89. // the result content and automatically closes response object.
  90. func ConnectContent(url string, data ...interface{}) string {
  91. return RequestContent("CONNECT", url, data...)
  92. }
  93. // OptionsContent is a convenience method for sending OPTIONS request, which retrieves and returns
  94. // the result content and automatically closes response object.
  95. func OptionsContent(url string, data ...interface{}) string {
  96. return RequestContent("OPTIONS", url, data...)
  97. }
  98. // TraceContent is a convenience method for sending TRACE request, which retrieves and returns
  99. // the result content and automatically closes response object.
  100. func TraceContent(url string, data ...interface{}) string {
  101. return RequestContent("TRACE", url, data...)
  102. }
  103. // RequestContent is a convenience method for sending custom http method request, which
  104. // retrieves and returns the result content and automatically closes response object.
  105. func RequestContent(method string, url string, data ...interface{}) string {
  106. return NewClient().RequestContent(method, url, data...)
  107. }
  108. // GetBytes is a convenience method for sending GET request, which retrieves and returns
  109. // the result content as bytes and automatically closes response object.
  110. func GetBytes(url string, data ...interface{}) []byte {
  111. return RequestBytes("GET", url, data...)
  112. }
  113. // PutBytes is a convenience method for sending PUT request, which retrieves and returns
  114. // the result content as bytes and automatically closes response object.
  115. func PutBytes(url string, data ...interface{}) []byte {
  116. return RequestBytes("PUT", url, data...)
  117. }
  118. // PostBytes is a convenience method for sending POST request, which retrieves and returns
  119. // the result content as bytes and automatically closes response object.
  120. func PostBytes(url string, data ...interface{}) []byte {
  121. return RequestBytes("POST", url, data...)
  122. }
  123. // DeleteBytes is a convenience method for sending DELETE request, which retrieves and returns
  124. // the result content as bytes and automatically closes response object.
  125. func DeleteBytes(url string, data ...interface{}) []byte {
  126. return RequestBytes("DELETE", url, data...)
  127. }
  128. // HeadBytes is a convenience method for sending HEAD request, which retrieves and returns
  129. // the result content as bytes and automatically closes response object.
  130. func HeadBytes(url string, data ...interface{}) []byte {
  131. return RequestBytes("HEAD", url, data...)
  132. }
  133. // PatchBytes is a convenience method for sending PATCH request, which retrieves and returns
  134. // the result content as bytes and automatically closes response object.
  135. func PatchBytes(url string, data ...interface{}) []byte {
  136. return RequestBytes("PATCH", url, data...)
  137. }
  138. // ConnectBytes is a convenience method for sending CONNECT request, which retrieves and returns
  139. // the result content as bytes and automatically closes response object.
  140. func ConnectBytes(url string, data ...interface{}) []byte {
  141. return RequestBytes("CONNECT", url, data...)
  142. }
  143. // OptionsBytes is a convenience method for sending OPTIONS request, which retrieves and returns
  144. // the result content as bytes and automatically closes response object.
  145. func OptionsBytes(url string, data ...interface{}) []byte {
  146. return RequestBytes("OPTIONS", url, data...)
  147. }
  148. // TraceBytes is a convenience method for sending TRACE request, which retrieves and returns
  149. // the result content as bytes and automatically closes response object.
  150. func TraceBytes(url string, data ...interface{}) []byte {
  151. return RequestBytes("TRACE", url, data...)
  152. }
  153. // RequestBytes is a convenience method for sending custom http method request, which
  154. // retrieves and returns the result content as bytes and automatically closes response object.
  155. func RequestBytes(method string, url string, data ...interface{}) []byte {
  156. return NewClient().RequestBytes(method, url, data...)
  157. }
  158. // GetVar sends a GET request, retrieves and converts the result content to specified pointer.
  159. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  160. func GetVar(url string, data ...interface{}) *gvar.Var {
  161. return RequestVar("GET", url, data...)
  162. }
  163. // PutVar sends a PUT request, retrieves and converts the result content to specified pointer.
  164. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  165. func PutVar(url string, data ...interface{}) *gvar.Var {
  166. return RequestVar("PUT", url, data...)
  167. }
  168. // PostVar sends a POST request, retrieves and converts the result content to specified pointer.
  169. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  170. func PostVar(url string, data ...interface{}) *gvar.Var {
  171. return RequestVar("POST", url, data...)
  172. }
  173. // DeleteVar sends a DELETE request, retrieves and converts the result content to specified pointer.
  174. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  175. func DeleteVar(url string, data ...interface{}) *gvar.Var {
  176. return RequestVar("DELETE", url, data...)
  177. }
  178. // HeadVar sends a HEAD request, retrieves and converts the result content to specified pointer.
  179. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  180. func HeadVar(url string, data ...interface{}) *gvar.Var {
  181. return RequestVar("HEAD", url, data...)
  182. }
  183. // PatchVar sends a PATCH request, retrieves and converts the result content to specified pointer.
  184. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  185. func PatchVar(url string, data ...interface{}) *gvar.Var {
  186. return RequestVar("PATCH", url, data...)
  187. }
  188. // ConnectVar sends a CONNECT request, retrieves and converts the result content to specified pointer.
  189. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  190. func ConnectVar(url string, data ...interface{}) *gvar.Var {
  191. return RequestVar("CONNECT", url, data...)
  192. }
  193. // OptionsVar sends a OPTIONS request, retrieves and converts the result content to specified pointer.
  194. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  195. func OptionsVar(url string, data ...interface{}) *gvar.Var {
  196. return RequestVar("OPTIONS", url, data...)
  197. }
  198. // TraceVar sends a TRACE request, retrieves and converts the result content to specified pointer.
  199. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  200. func TraceVar(url string, data ...interface{}) *gvar.Var {
  201. return RequestVar("TRACE", url, data...)
  202. }
  203. // RequestVar sends request using given HTTP method and data, retrieves converts the result
  204. // to specified pointer. It reads and closes the response object internally automatically.
  205. // The parameter <pointer> can be type of: struct/*struct/**struct/[]struct/[]*struct/*[]struct, et
  206. func RequestVar(method string, url string, data ...interface{}) *gvar.Var {
  207. response, err := DoRequest(method, url, data...)
  208. if err != nil {
  209. return gvar.New(nil)
  210. }
  211. defer response.Close()
  212. return gvar.New(response.ReadAll())
  213. }