Как мне сделать HTTPGet для пользовательского метода контроллера - PullRequest
0 голосов
/ 25 сентября 2019

Каков наилучший способ сделать запрос httpget для пользовательского метода контроллера GetTestInfoByTestTypeID.Ниже вы найдете мое клиентское приложение, контроллер API, модель и dbcontext.Запросы TestInfo и TestInfo / ID работают, но метод GetTestInfoByTestTypeID не работает.

Клиент

   request.Method = HttpMethod.Get;
   // request.RequestUri = new Uri(ConstantsCS.c_BaseURL + "/TestIT/TestInfo"); WORKS
   // request.RequestUri = new Uri(ConstantsCS.c_BaseURL + "/TestIT/TestInfo/4"); WORKS
      request.RequestUri = new Uri(ConstantsCS.c_BaseURL + "/TestIT/TestInfo/GetTestInfoByTestTypeID/4"); //DOES NOT WORK

   HttpResponseMessage responsemsg = await client.SendAsync(request);
   if (responsemsg.StatusCode == System.Net.HttpStatusCode.OK)
   {
   }

Метод API-контроллера:

#region "TestIT/Testinfo/GetTestInfoByTestTypeID/1"
        [HttpGet("{TestTypeId}", Name = "GetTestInfoByTestTypeID")]
        public IEnumerable<TestInfo> GetTestInfoByTestTypeID([FromRoute] int TestTypeId)
        {
            try
            {
                List<TestInfo> tstinfoIn = _context.TestInfo.ToList();
                List<TestTypeInfo> tsttypinfoIn = _context.TestTypeInfo.ToList();

                List<TestInfo> tstinfoCombo = new List<TestInfo>();

                tstinfoCombo = tstinfoIn.Select(c => new TestInfo()
                {
                    TestId = c.TestId,
                    TestShortDescription = c.TestShortDescription,
                    TestLongDescription = c.TestLongDescription,
                    TestTypeId = c.TestTypeId,
                    TestTypeInfos = GetTestTypeInfo(tsttypinfoIn, c.TestTypeId)
                }).ToList();

                tstinfoCombo = tstinfoCombo
                    .Where(x => x.TestTypeId == TestTypeId)
                    .Select(x => new TestInfo()
                {
                    TestId = x.TestId,
                    TestShortDescription = x.TestShortDescription,
                    TestLongDescription = x.TestLongDescription,
                    TestTypeId = x.TestTypeId,
                    TestTypeInfos = x.TestTypeInfos
                }).ToList();

                return tstinfoCombo;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        #endregion

TestInfo Модель:

namespace TestITWebService.Model
{
    public partial class TestInfo
    {
        public int TestId { get; set; }
        public string TestShortDescription { get; set; }
        public string TestLongDescription { get; set; }
        public int TestTypeId { get; set; }
        public ICollection<TestTypeInfo> TestTypeInfos { get; set; }
    }
}

DBContext:

#region "TestInfo"
            modelBuilder.Entity<TestInfo>(entity =>
            {
                entity.HasKey(e => e.TestId);

                entity.HasIndex(e => e.TestShortDescription)
                    .HasName("IX_TestInfo")
                    .IsUnique();

                entity.Property(e => e.TestId).HasColumnName("TestID");

                entity.Property(e => e.TestLongDescription)
                    .HasMaxLength(150)
                    .IsUnicode(false);

                entity.Property(e => e.TestShortDescription)
                    .IsRequired()
                    .HasMaxLength(50)
                    .IsUnicode(false);

                entity.Property(e => e.TestTypeId).HasColumnName("TestTypeID");
            });
            #endregion
...