繁体   English   中英

路由获取方法如何使用查询参数 .net core

[英]How route get method with query params .net core

我从桌面应用程序调用 web api get 方法。

这是调用方法

private static async Task<Interval> Check(Interval checkGet)
        {
            var queryParams = new Dictionary<string, string>(2);
            queryParams.Add("DateStart", intervalForGet.DateStart.ToString());
            queryParams.Add("DateEnd", intervalForGet.DateEnd.ToString());

            string requestUri = QueryHelpers.AddQueryString("http://localhost:58232/api/Check", queryParams);

            HttpClient client = new HttpClient();

            var httpResponse = await client.GetAsync(requestUri);

            var createdTask = JsonConvert.DeserializeObject<Interval>(await httpResponse.Content.ReadAsStringAsync());    
            return createdTask;
        }

模型

public class Interval
        {
            public int Id { get; set; }
            public DateTime DateStart { get; set; }
            public DateTime DateEnd { get; set; }
        }

当我调试此代码时,我看到下一个 requestUri http://localhost:58232/api/Check?DateStart=03.01.2018%200%3A00%3A00&DateEnd=03.01.2018%200%3A00%3A00

这是来自 web api 的 get 方法

[HttpGet("api/Check/{DateStart}/{DateEnd}")]
        public async Task<List<Intervals>> Check([FromQuery]string urlString)
        {
          //some code
        }

这是启动类

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

告诉我。 如何制作路线,因为我的[HttpGet("api/Check/{DateStart}/{DateEnd}")]对我不起作用

在您的来电者中:

var httpResponse = await client.GetAsync($"http://localhost:58232/api/Check/{intervalForGet.DateStart.ToString()}/{intervalForGet.DateEnd.ToString()}");

在你的 api

[HttpGet("api/Check/{DateStart}/{DateEnd}")]
        public async Task<List<Intervals>> Check(DateTime DateStart,DateTime DateEnd)
        {
          //some code
        }

不要忘记以正确的格式传递您的日期,例如 2020-11-12

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM