Každý API kontroller by měl mít attributy [Route("api/[controller]")] a [ApiController]. Route nám řiká kam se musíme doptávat, abychom dostali request.
Například:
Máme API controller PeopleController a jeho routa je [Route("api/[controller]")].
Takže pro aktivaci bude potřeba napsat api/People/[jakákoliv akce]
Příklad 2:
Máme API controller realEstatesController a jeho routa je [Route("houses/expensive/[controller]")].
Takže pro aktivaci bude potřeba napsat houses/expensive/realEstates/[jakákoliv akce]
Každá metoda by měla mít svoje označení o jakou http metodu se jedná.
Do závorky té metody vkládáme jaké informace potřebuje její query string
Napříkad:
// Tímto jsme přidali nutnost přidat číslo na konec url
// GET api/<ValuesController>/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
//Opět to samé, ale nyní musi být v těle string
// PUT api/<ValuesController>/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
Dá se vrátit prakticky skoro všechno, co má nějaký jednoduchý datový typ. Třeba struct, nebo jednoduchá třída nebo-li model.
return Json("nějaky objekt") // Vrací Json objekt
//XML vracíme jako string
return Ok("Nějaký objekt") // http kodem 200
return Unauthorized("nějaky objekt") // http kodem 400
return List<string>
// mužeme vrace i jednoduše list věci, von je změní na json
return "Ahoj";
Json
- Lehký textový formát pro výměnu dat.
- Strukturovaná data v podobě klíč-hodnota, pole a objekty.
- Čitelný pro člověka i stroje, snadno se analyzuje a generuje.
{
"jméno": "Jan",
"příjmení": "Novák",
"věk": 30,
"adresa": {
"město": "Praha",
"PSČ": "100 00"
},
"zájmy": ["programování", "sport"]
}
Newtonsoft.Json
// Serializace objektu do JSON
var osoba = new Osoba { Jméno = "Jan", Příjmení = "Novák", Věk = 30 };
var json = JsonConvert.SerializeObject(osoba);
Console.WriteLine(json); // Vytiskne JSON řetězec
// Deserializace JSON do objektu
string jsonText = "{\"Jméno\":\"Jan\",\"Příjmení\":\"Novák\",\"Věk\":30}";
var deserializovanáOsoba = JsonConvert.DeserializeObject<Osoba>(jsonText);
Console.WriteLine(deserializovanáOsoba.Jméno); // Vytiskne "Jan"
XML
- Označovací jazyk pro strukturovaná data..
- Hierarchická struktura s tagy a atributy.
- Čitelný pro člověka, pro stroje vyžaduje parsování.
<?xml version="1.0" encoding="utf-8"?>
<osoba>
<jméno>Jan</jméno>
<příjmení>Novák</příjmení>
<věk>30</věk>
<adresa>
<město>Praha</město>
<PSČ>100 00</PSČ>
</adresa>
<zájmy>
<zájem>programování</zájem>
<zájem>sport</zájem>
</zájmy>
</osoba>
System.Xml.Serialization
// Serializace objektu do XML
var osoba = new Osoba { Jméno = "Jan", Příjmení = "Novák", Věk = 30 };
var xml = XmlSerializer.Serialize(osoba, typeof(Osoba));
Console.WriteLine(xml); // Vytiskne XML řetězec
// Deserializace XML do objektu
string xmlText = "<osoba><jméno>Jan</jméno><příjmení>Novák</příjmení><věk>30</věk></osoba>";
var deserializovanáOsoba = XmlSerializer.Deserialize(new StringReader(xmlText), typeof(Osoba)) as Osoba;
Console.WriteLine(deserializovanáOsoba.Jméno); // Vytiskne "Jan"
REST je architektonický styl pro návrh webových služeb, který se zaměřuje na reprezentaci dat a využívá protokoly HTTP (GET, POST, PUT, DELETE) pro manipulaci s daty. Klienty (např. mobilní aplikace, webové stránky) komunikují se servery pomocí těchto metod a datových formátů (často JSON nebo XML).
RESTful formáty adres
RESTful formáty adres jsou URL adresy, které se řídí principy REST a usnadňují klientovi pochopení struktury a manipulace s daty.
Vlastnosti RESTful formátů adres:
- Hierarchická struktura: Adresy odrážejí hierarchii dat na serveru. Například `/users/:id` by se dalo použít pro přístup k uživatelskému profilu s daným ID.
- Smysluplné názvy: Názvy v adresách by měly jasně popisovat, co daný zdroj reprezentuje. Například `/users` by se dalo použít pro získání seznamu všech uživatelů.
- Použití metod HTTP: Různé metody HTTP (GET, POST, PUT, DELETE) se používají pro různé operace s daty. Například GET se používá pro získání dat, POST pro vytvoření dat, PUT pro aktualizaci dat a DELETE pro smazání dat.
- Formáty dat: Data se obvykle přenáší ve formátech JSON nebo XML.
Příklad: Formát adresy /users/:id
* `/users/` - Tato část adresy indikuje, že klient chce přistupovat k kontrolleru "uživatelé".
* `:id` - Tato část adresy je zástupný symbol pro ID uživatele. Klient by ho nahradil skutečným ID uživatele, ke kterému chce přistupovat. Například `/users/123` by znamenalo přístup k profilu uživatele s ID 123.