声明一个带有一个必需参数和多个可选查询字符串的路由。

huangapple go评论118阅读模式
英文:

Declaring a route with one required parameter and multiple optional query strings

问题

我没有太多声明路由的经验,所以我想要的可能是无效的,但我考虑创建这样的路由:

  1. givememoney/printdate/2023-05-23&currency=USD&amonut=alot&forwhom=me,mom,dad

其中printdate和其对应的值,如2023-05-23,始终是必需的,而其余部分是可选的

首先:这是有效的吗?

其次:如果有效,如何声明这样的路由?以下是我尝试过的方式,但是它是错误的:

  1. [FunctionName("GiveMeMoney")]
  2. public async Task<IActionResult> GiveMeMoney(
  3. [HttpTrigger(AuthorizationLevel.Function, "get", Route = "givememoney/{printdate}/{optional?}")] HttpRequest req, ILogger log, string printdate, string? optional)
  4. {
  5. // .... stuff ...
  6. }

希望这对你有帮助。

英文:

I don't have much experience in declaring routes so what I want might even be invalid but I am thinking of having a route like this:

  1. givememoney/printdate/2023-05-23&amp;currency=USD&amp;amonut=alot&amp;forwhom=me,mom,dad

where printdate and some value for it like 2023-05-23 is always required.
but the rest of it is optional.

First: Is this valid?

Second: If it is valid, how can I declare such a route? Here is what I tried but it is wrong.

  1. [FunctionName(&quot;GiveMeMoney&quot;)]
  2. public async Task&lt;IActionResult&gt; GiveMeMoney(
  3. [HttpTrigger(AuthorizationLevel.Function, &quot;get&quot;, Route = &quot;givememoney/{printdate}/{optional?}&quot;)] HttpRequest req, ILogger log, string printdate, string? optional)
  4. {
  5. // .... stuff ...
  6. }

答案1

得分: 0

以下是您要翻译的内容:

第一部分:

First: Is this valid?
Yes, this is Valid and below is my code:
Function1.cs:

  1. using System.Net;
  2. using Microsoft.Azure.Functions.Worker;
  3. using Microsoft.Azure.Functions.Worker.Http;
  4. using Microsoft.Extensions.Logging;
  5. namespace FunctionApp24
  6. {
  7. public class Function1
  8. {
  9. private readonly ILogger _logger;
  10. public Function1(ILoggerFactory loggerFactory)
  11. {
  12. _logger = loggerFactory.CreateLogger<Function1>();
  13. }
  14. [Function("Function1")]
  15. public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "get", Route = "emo/{date}")] HttpRequestData req, FunctionContext context,
  16. string date, string? Sur)
  17. {
  18. var logger = context.GetLogger("Function1");
  19. var q = req.Url.Query;
  20. var qp = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(q);
  21. string name = qp["name"];
  22. if (!string.IsNullOrEmpty(Sur))
  23. {
  24. logger.LogInformation($"SurName: {Sur}");
  25. }
  26. logger.LogInformation($"name:{name}");
  27. var response = req.CreateResponse(HttpStatusCode.OK);
  28. response.WriteString("Completed Rithwik");
  29. return response;
  30. }
  31. }
  32. }

这里要注意,代码部分不会被翻译。

第二部分:

Second: If it is valid, how can I declare such a route?
Firstly, to call only required then use below:
http://localhost:7115/api/emo/2023-05-25?name=Rithwik
声明一个带有一个必需参数和多个可选查询字符串的路由。
Output:
声明一个带有一个必需参数和多个可选查询字符串的路由。
Optional Calling :
http://localhost:7115/api/emo/2023-05-25?name=Rithwik&Sur=Bojja
声明一个带有一个必需参数和多个可选查询字符串的路由。
Output:
声明一个带有一个必需参数和多个可选查询字符串的路由。

这里也是代码和图片,没有需要翻译的文本内容。

英文:

>First: Is this valid?

Yes, this is Valid and below is my code:

Function1.cs:

  1. using System.Net;
  2. using Microsoft.Azure.Functions.Worker;
  3. using Microsoft.Azure.Functions.Worker.Http;
  4. using Microsoft.Extensions.Logging;
  5. namespace FunctionApp24
  6. {
  7. public class Function1
  8. {
  9. private readonly ILogger _logger;
  10. public Function1(ILoggerFactory loggerFactory)
  11. {
  12. _logger = loggerFactory.CreateLogger&lt;Function1&gt;();
  13. }
  14. [Function(&quot;Function1&quot;)]
  15. public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, &quot;get&quot;, Route = &quot;emo/{date}&quot;)] HttpRequestData req, FunctionContext context,
  16. string date, string? Sur)
  17. {
  18. var logger = context.GetLogger(&quot;Function1&quot;);
  19. var q = req.Url.Query;
  20. var qp = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(q);
  21. string name = qp[&quot;name&quot;];
  22. if (!string.IsNullOrEmpty(Sur))
  23. {
  24. logger.LogInformation($&quot;SurName: {Sur}&quot;);
  25. }
  26. logger.LogInformation($&quot;name:{name}&quot;);
  27. var response = req.CreateResponse(HttpStatusCode.OK);
  28. response.WriteString(&quot;Completed Rithwik&quot;);
  29. return response;
  30. }
  31. }
  32. }

Here name is required parameter and Sur is Optional Parameter.

> Second: If it is valid, how can I declare such a route?

Firstly, to call only required then use below:

  1. http://localhost:7115/api/emo/2023-05-25?name=Rithwik

声明一个带有一个必需参数和多个可选查询字符串的路由。

Output:

声明一个带有一个必需参数和多个可选查询字符串的路由。

Optional Calling :

  1. http://localhost:7115/api/emo/2023-05-25?name=Rithwik&amp;Sur=Bojja

声明一个带有一个必需参数和多个可选查询字符串的路由。

Output:

声明一个带有一个必需参数和多个可选查询字符串的路由。

huangapple
  • 本文由 发表于 2023年5月24日 21:24:25
  • 转载请务必保留本文链接:https://go.coder-hub.com/76324048.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定