1. Generalnie parametry można przekazać przez URL lub w Body, ponieważ standard protokołu HTTP przewiduje takie coś jak Body.
I teraz najważniejsze. Jeśli określić parametr w { }, nie potrzebuje atrybuty FromQuery, ponieważ proces automatycznie go przechwyci
[HttpGet("{id}")] public ActionResult<Pet> GetById(int id)
Jeśli url posiada wartości po znaku zapytania -> ...?ID="123", wtedy musisz użyć FromQuery ->
[FromQuery] string ID
Co do FromBody mówi procesowi, aby przeszukał Http Body w celu znalezienia obiektu, który nas interesuje. Najczęściej deserializuje się w tym celu obiekt JSON umieszczony w Http Body.
public ActionResult<Pet> Create([FromBody] Pet pet)
public class Pet
{
public string Name { get; set; }
public string Breed { get; set; }
}
2. Co do HttpGet, jest to atrybut, który rozpoznaje metodę wejściową do aplikacji zmapowaną z podanym URL, ponieważ ten atrybuty w kontruktorze przyjmuje string jako wartość URL. Jeśli go nie dasz, nie bedziesz mógł zmapować metody z URL aplikacji.
Oczywiście podany URL w HttpGet jest wartością łączoną, ponieważ URL można jeszcze określić na poziomie kontruktora. Nie będę już tego rozpisywać, ale zachęcam do nauki :D