C#-如何使用此api路线/ api / shelters / <id> / animals给出ID庇护所选择的所有动物的清单

我需要一个庇护所内所有动物名字的清单。庇护所是由id选择的,因此在这种情况下为1。 api路由应为 / api / shelters / / animals

如果所选的id不是避难所,则应该是404。

// specific list of animals in the chosen shelter -by Id-
public IactionResult animals(int ShelterId) {
    var infoAnimals = ShelterDatabase.Shelter.Animals;
    return new ObjectResult(infoAnimals);
}

var shelter = new Shelter.Shared.Shelter()
{
    ShelterId = 1,Name = "Our shelter"
};

shelter.Animals = new List<Animal>
{
    new Cat{ Id = 1,Name = "Poes",DateOfBirth = new DateTime(2000,02,14),IsChecked = true,KidFriendly = false,Since = DateTime.Now,Declawed = true,Race = "Hairless Sphynx"},new Cat{ Id = 2,Name = "Kity",new Cat{ Id = 3,Name = "wietel",new Dog{ Id = 4,Name = "felix",KidFriendly = true,Barker = true,Race = "Golden Retriever"},new Dog{ Id = 5,Name = "peppa",Race = "Danish Dog"},};
zouminfeng 回答:C#-如何使用此api路线/ api / shelters / <id> / animals给出ID庇护所选择的所有动物的清单

您的代码应与此类似:

public IActionResult animals(int ShelterId)
{
    var shelters = ShelterDatabase.Shelter;  // this should be collection of shelters
    var shelter = shelters.FirstOrDefault(_ => _.ShelterId == ShelterId);
    if (shelter == null)
    {
        return NotFound();
    }

    var animals = shelter.Animals;

    return new ObjectResult(animals);
}
,

尝试此操作,您必须指定允许的请求方法(获取,发布,放置,删除),并为其指定路由前缀/后缀和路由名称(动物)。

// specific list of animals in the chosen shelter -by Id-
[HttpGet("{id}/animals")]
public IActionResult animals(int ShelterId) {
    var infoAnimals = ShelterDatabase.Shelter.Animals;
    return new ObjectResult(infoAnimals);
} 
,

首先看一下documentation

默认路由方案如下:"[controller]/[action]/{id}"

因此,控制器中的每个动作都会有一条单独的路线

在您的情况下,/api/shelters/< id >/animals,您的路线未执行操作或顺序不正确

我会这样:

//api/shelters/0
[HttpGet("[controller]/{id}")] 
public IActionResult sherlter(int ShelterId) {
    var shelter = ShelterDatabase.Shelter;
    return new ObjectResult(shelter);
}

//api/shelters/animals/0
[HttpGet("[controller]/[action]/{id}")] 
public IActionResult animals(int ShelterId) {
    var infoAnimals = ShelterDatabase.Shelter.Animals;
    return new ObjectResult(infoAnimals);
}

(对于.net核心,请使用注释:[HttpGet],对于.net框架,请使用注释:[Route]

本文链接:https://www.f2er.com/3116459.html

大家都在问