Как метод get route с параметрами запроса. net core - PullRequest
0 голосов
/ 29 марта 2020

я вызываю метод 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

это метод get из web api

[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}")] не работают для меня

1 Ответ

0 голосов
/ 29 марта 2020

У вашего абонента:

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

...