Получение ошибки 404 на http://localhost:5000/api/categories с C # и API.NET в коде VS - PullRequest
0 голосов
/ 31 октября 2019

Я следую вместе с https://www.freecodecamp.org/news/an-awesome-guide-on-how-to-build-restful-apis-with-asp-net-core-87b818123e28/, и в этот момент я должен вывести эти данные JSON в свой браузер.

[
  {
     "id": 100,
     "name": "Fruits and Vegetables",
     "products": []
  },
  {
     "id": 101,
     "name": "Dairy",
     "products": []
  }
]

Однако я получаю ошибку 404 наhttp://localhost:5000/api/categories. В остальном все кажется нормально и без ошибок на данный момент. Я работал со стеком MERN раньше, поэтому чувствую, что, возможно, заметил бы, что конечная точка отсутствует или что-то в этом роде. Поскольку это моя первая попытка с API.NET, я действительно озадачен и прошу помощи. Мне пришлось сделать много установок пакетов и модификаций версий, как с MERN, чтобы решить любые предыдущие проблемы, которые у меня были с этим проектом, и они позаботились об этих проблемах, поэтому я предполагаю, что это может быть что-то в этом роде снова. Спасибо за любую помощь. Проект доступен по адресу GitHub Market-App , поскольку существует несколько файлов, от которых зависит «Категории».

1 Ответ

0 голосов
/ 31 октября 2019

Глядя на ваш проект, вы не настроили класс Startup правильно.

Сейчас рекомендуется (начиная с версии 3.0, на которую, по-видимому, вы нацелены), использовать конечные точки вместо mvc . Итак, ваш стартап должен выглядеть так:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers(); // <-- this changed

    services.AddDbContext<AppDbContext>(options => {
        options.UseInMemoryDatabase("market-api-in-memory");
    });

    services.AddScoped<ICategoryRepository, CategoryRepository>();
    services.AddScoped<ICategoryService, CategoryService>();
}


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

    // Routing is added from your version:
    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}
...