ValuesController.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. using System.Collections.Generic;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4. using Microsoft.AspNetCore.Mvc;
  5. namespace Did.NetcoreLoader.Demo.Controllers
  6. {
  7. [Route("apidemo/[controller]")]
  8. [Route("apidemo/v1")]
  9. [ApiController]
  10. public class ValuesController : ControllerBase
  11. {
  12. #region (x.1)route
  13. /// <summary>
  14. /// GET apidemo/Values
  15. /// </summary>
  16. /// <returns></returns>
  17. [HttpGet]
  18. public object Route0()
  19. {
  20. //var requestFeature = Request.HttpContext.Features.Get<IHttpRequestFeature>();
  21. return "GET apidemo/Values";
  22. }
  23. /// <summary>
  24. /// GET apidemo/Values/route_x
  25. /// </summary>
  26. /// <returns></returns>
  27. [HttpGet("route1")]
  28. [HttpGet("route2")]
  29. [HttpGet("/apidemo/Values/route3")]
  30. public object Route1()
  31. {
  32. return new{
  33. Request.Path,
  34. Method = Request.Method
  35. };
  36. }
  37. /// <summary>
  38. /// GET apidemo/Values/route4
  39. /// </summary>
  40. /// <returns></returns>
  41. [HttpGet("[action]")]
  42. public object route4()
  43. {
  44. return new
  45. {
  46. name= "GET apidemo/Values/route4",
  47. Request.Path,
  48. Method = Request.Method
  49. };
  50. }
  51. #endregion
  52. #region (x.2) result
  53. /// <summary>
  54. /// GET apidemo/Values/result1
  55. /// </summary>
  56. /// <returns></returns>
  57. [HttpGet("result1")]
  58. public object Result1()
  59. {
  60. return "GET apidemo/Values/result1";
  61. }
  62. /// <summary>
  63. /// GET apidemo/Values/result2
  64. /// </summary>
  65. /// <returns></returns>
  66. [HttpGet("result2")]
  67. public ActionResult<string> Result2()
  68. {
  69. return "GET apidemo/Values/result2";
  70. }
  71. /// <summary>
  72. /// GET apidemo/Values/result3
  73. /// </summary>
  74. /// <returns></returns>
  75. [HttpGet("result3")]
  76. public ActionResult<IEnumerable<string>> Result3()
  77. {
  78. return new string[] { "GET apidemo/Values/result3", "" };
  79. }
  80. /// <summary>
  81. /// GET apidemo/Values/result4
  82. /// </summary>
  83. /// <returns></returns>
  84. [HttpGet("result4")]
  85. public async Task<string> Result4()
  86. {
  87. await Task.Run(() => { Thread.Sleep(2000); });
  88. return "GET apidemo/Values/result4";
  89. }
  90. /// <summary>
  91. /// GET apidemo/Values/result5
  92. /// </summary>
  93. /// <returns></returns>
  94. [HttpGet("result5")]
  95. public async Task<ActionResult<string>> Result5()
  96. {
  97. await Task.Run(() => { Thread.Sleep(2000); });
  98. return "GET apidemo/Values/result5";
  99. }
  100. #endregion
  101. #region (x.3) HttpMethod
  102. /// <summary>
  103. /// GET apidemo/Values/method
  104. /// </summary>
  105. /// <returns></returns>
  106. [HttpGet("method")]
  107. public string Method_Get()
  108. {
  109. return "GET apidemo/Values/method";
  110. }
  111. /// <summary>
  112. /// POST apidemo/Values/method
  113. /// </summary>
  114. /// <returns></returns>
  115. [HttpPost("method")]
  116. public string Method_Post()
  117. {
  118. return "POST apidemo/Values/method";
  119. }
  120. /// <summary>
  121. /// Put apidemo/Values/method
  122. /// </summary>
  123. /// <returns></returns>
  124. [HttpPut("method")]
  125. public string Method_Put()
  126. {
  127. return "Put apidemo/Values/method";
  128. }
  129. /// <summary>
  130. /// Delete apidemo/Values/method
  131. /// </summary>
  132. /// <returns></returns>
  133. [HttpDelete("method")]
  134. public string Method_Delete()
  135. {
  136. return "Delete apidemo/Values/method";
  137. }
  138. /// <summary>
  139. /// Head apidemo/Values/method
  140. /// </summary>
  141. /// <returns></returns>
  142. [HttpHead("method")]
  143. public string Method_Head()
  144. {
  145. return "Head apidemo/Values/method";
  146. }
  147. /// <summary>
  148. /// Options apidemo/Values/method
  149. /// </summary>
  150. /// <returns></returns>
  151. [HttpOptions("method")]
  152. public string Method_Options()
  153. {
  154. return "Options apidemo/Values/method";
  155. }
  156. /// <summary>
  157. /// Patch apidemo/Values/method
  158. /// </summary>
  159. /// <returns></returns>
  160. [HttpPatch("method")]
  161. public string Method_Patch()
  162. {
  163. return "Patch apidemo/Values/method";
  164. }
  165. /// <summary>
  166. /// get|post apidemo/Values/method2
  167. /// </summary>
  168. /// <returns></returns>
  169. [Route("method2")]
  170. [HttpGet,HttpPost]
  171. public object Method2()
  172. {
  173. return new
  174. {
  175. Request.Path,
  176. Method = Request.Method
  177. };
  178. }
  179. #endregion
  180. #region (x.4) Arg
  181. /// <summary>
  182. /// GET apidemo/Values/arg1/{id}/{id2}
  183. /// </summary>
  184. /// <returns></returns>
  185. [HttpGet("arg1/{id}/{id2}")]
  186. public object Arg1(string id,string id2)
  187. {
  188. return new {
  189. route= "GET apidemo/Values/arg1/{id}/{id2}",
  190. arg = new { id,id2 }
  191. };
  192. }
  193. ///// <summary>
  194. ///// GET apidemo/Values/arg2/arg2?id={id}
  195. ///// </summary>
  196. ///// <returns></returns>
  197. //[HttpGet("arg2?id={id}")]
  198. //public object Arg2(string id)
  199. //{
  200. // return new
  201. // {
  202. // route = "GET apidemo/Values/arg2/arg2?id={id}",
  203. // arg = new { id }
  204. // };
  205. //}
  206. /// <summary>
  207. /// POST apidemo/Values/arg3
  208. /// </summary>
  209. /// <returns></returns>
  210. [HttpPost("arg3")]
  211. public object Arg3([FromBody] string arg1)
  212. {
  213. return new
  214. {
  215. route = "POST apidemo/Values/arg3",
  216. arg = new { arg1 }
  217. };
  218. }
  219. /// <summary>
  220. /// POST apidemo/Values/arg4
  221. /// </summary>
  222. /// <returns></returns>
  223. [HttpPost("arg4")]
  224. public object Arg4([FromBody] Arg4Model arg)
  225. {
  226. return new
  227. {
  228. route = "POST apidemo/Values/arg4",
  229. arg = arg
  230. };
  231. }
  232. public class Arg4Model {
  233. public string arg1 { get; set; }
  234. public string arg2 { get; set; }
  235. };
  236. #endregion
  237. }
  238. }