Почему не работает маршрут в apicontroller? - PullRequest
1 голос
/ 07 мая 2020

У меня есть класс контроллера под названием «GebruikersController»

, когда я использую «https://localhost: 5001 / Gebruikers », я получаю правильный результат, но когда я использую «https://localhost: 5001 / api / GebruikerController / Gebruikers"(как это должно работать?) У меня пустая страница. Кто-нибудь может мне помочь? Спасибо!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using RESTAPI.Data;
using RESTAPI.Data.Repositories;
using RESTAPI.DTOs;
using RESTAPI.Models;

namespace RESTAPI.Controllers
{
  [ApiConventionType(typeof(DefaultApiConventions))]
  [Produces("application/json")]
  [Route("api/[controller]")]
  [ApiController]
  public class GebruikersController : ControllerBase
  {
    private readonly IGebruikerRepository _gebruikerRepository;

    public GebruikersController(IGebruikerRepository context)
    {
            _gebruikerRepository = context;
    }

    // GET: api/Gebruikers
    /// <summary>
    /// Geeft alle gebruikers geordend op achternaam
    /// </summary>
    /// <returns>array van gebruikers</returns>
    [HttpGet("/Gebruikers")]
    public IEnumerable<Gebruiker> GetGebruikers()
    {
            return _gebruikerRepository.GetAlleGebruikers().OrderBy(d => d.Achternaam);
    }

    // GET: api/Gebruikers/5
    /// <summary>
    /// Geeft de gebruiker met het gegeven id terug
    /// </summary>
    /// <param name="id">het id van de gebruiker</param>
    /// <returns>De gebruiker</returns>
    [HttpGet("{id}")]
    public ActionResult<Gebruiker> GetGebruiker(int id)
    {
      Gebruiker gebruiker = _gebruikerRepository.GetBy(id);
      if (gebruiker == null) return NotFound();
      return gebruiker;
    }

  }
}

Ответы [ 2 ]

5 голосов
/ 07 мая 2020

Попробуйте использовать https://localhost:5001/api/Gebruikers/Gebruikers вместо https://localhost:5001/api/GebruikerController/Gebruikers.

Слово « controller » не написано в URL-адресе.

0 голосов
/ 07 мая 2020

Добавьте к действию атрибут Route. тогда оба маршрута будут распознаны.

[HttpGet("/Gebruikers")]
[Route("Gebruikers")]
public IActionResult GetGebruikers()
{
    return Ok();
}

sla sh проигнорирует атрибут маршрута на вашем контроллере, поэтому он сможет распознать только маршрут: "https://localhost: 5001 / Gebruikers"

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