ASP.Net Core routes with Web API

本文关键字:Web API with routes Net Core ASP | 更新日期: 2023-09-27 18:03:14

我有一个Web API控制器,有一个叫做GetHeroes()的方法,它不会被前端调用。我可以得到一个简单的Get()方法工作,但似乎没有一种方法来命名方法,并有这些方法调用。

CharactersController.cs

[Route("api/{controller}/{action}")]
public class CharactersController : Controller
{
    private readonly ICharacterRepository _characterRepository;
    public CharactersController(ICharacterRepository characterRepository)
    {
        _characterRepository = characterRepository;
    }

    [HttpGet]
    public IEnumerable<Character> GetHeroes()
    {
        return _characterRepository.ListAll().OrderBy(x => x.Name);
    }
}

data.service.ts

    getItems() {
    this.http.get('api/characters/getheroes').map((res: Response) => res.json()).subscribe(items => {
        this._collectionObserver.next(items);
    });
}

ASP.Net Core routes with Web API

可以在HttpGet属性中指定路由和参数。你试过这样的东西吗?

[Route("api/[controller]")]
public class CharactersController : Controller
{
    ...
    [HttpGet("GetHeroes")] // Here comes method name
    public IEnumerable<Character> GetHeroes()
    {
        return _characterRepository.ListAll().OrderBy(x => x.Name);
    }
}

这是一篇关于路由的好文章:自定义路由和动作方法名。. NET 5和ASP。. NET MVC 6

这适用于ASP。NET核心:

[HttpGet("{id}", Name = "GetHero")]
    public IActionResult GetById(string id)
    {
        var hero = Heroes.Find(id);
        if (hero == null)
        {
            return NotFound();
        }
        return new ObjectResult(hero);
    }