Как мне заставить мой web-api работать с моим контроллером, используя класс обслуживания? - PullRequest
1 голос
/ 09 июля 2019

Итак, я работаю над своим веб-приложением в .net core 2.1. Я использовал шаблон Api, и я пытаюсь заставить мой контроллер выполнять HttpGet, где я хочу перечислить все элементы из моей базы данных.

Мой DbProvider в данном случае является сервис-классом.

Я следовал этому уроку: https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.2&tabs=visual-studio

Мой контроллер

[Route("api/[controller]")]
    [ApiController]
    public class ValueController : ControllerBase
    {
        DbProvider _dbProvider;

        public ValueController(DbProvider dbProvider)
        {
            _dbProvider = dbProvider;
        }



        [HttpGet]
        public async Task<IEnumerable<Dto>> ListAllItemsAsync()
        {
            return await _dbProvider.ListAllValuesAsync();
        }

}

Мой класс обслуживания (провайдер)

  public class DbProvider
    {
         DbRepository _repository;

        public DbProvider(DbRepository repository)
        {
            _repository = repository;
        }

        public async Task<IEnumerable<Dto>> ListItemsAsync()
        {
            return await _repository.ListAsync();
        }
}

Мой Startup-файл:

   public void ConfigureServices(IServiceCollection services)
    {
            services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_2);
            var connString = "database-connectionsting-hardcoded-for-now";
            services.AddDbContext<DbContext>(options => options.UseSqlServer(connString));
            services.AddMvc();
            services.AddTransient<DbProvider>();

        }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {

                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else app.UseHsts();

                app.UseDefaultFiles();
                app.UseStaticFiles();
                app.UseHttpsRedirection();
                app.UseMvc();


            }

Я получаю код ошибки 404, а в Почтальоне я не могу получить никаких результатов.
Я ожидаю получить некоторые значения json из моей базы данных, чтобы убедиться, что все работает нормально.

Чего мне не хватает? Я могу сделать обычный HttGet-метод, и он работает. Как это:

  [HttpGet]
    public ActionResult Index() //This works
    { 
        return Content("Sucsess! ");
    }

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Я закрываю этот вопрос, поскольку моя проблема связана с внедрением зависимостей и моей многоуровневой архитектурой. Я обнаружил это после некоторого чтения в разных блогах. В любом случае спасибо всем за помощь!

0 голосов
/ 09 июля 2019

Вы должны использовать этот URL:

localhost:44339/api/value/ListAllItemsAsync
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...