Cześć
Mam pytanie co to jest JSON i REST w Javie? Jak korzystać Z REST? Może są jakieś toturiale PL?
generalnie gdybym miał najprościej wytłumaczyć jak to rozumiem to by było tak:
JSON - sposób zapisu danych, nic specjalnie skomplikowanego, swobodnie mozesz w głowie zamienic jakis XMLowi kod na JSONowski, przykład:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
<menu id="file" value="File">
<popup>
<menuitem value="New" onclick="CreateNewDoc()" />
<menuitem value="Open" onclick="OpenDoc()" />
<menuitem value="Close" onclick="CloseDoc()" />
</popup>
</menu>
(skradzione z wikipedii :P) 1szy JSON 2gi XML - to samo w obu przypadkach
REST - to sposob budowy aplikacji sieciowych opartych o tzw. interfejs REST - czyli wystawianie usług (mozna powiedzieć, że linków) które zwracaja dane w róznych postaciach: XML/JSON itd.
korzystam ze springa i wyglada to tak, ze tworzysz klase kontrolera (np. SomethingController) i masz w nim metode która jest "powiązana", nazwijmy to, z metodą za pomocą adnotacji @RequestMapping, która znowu ma argument value="LINK".
Przez to, jak uruchomisz aplikacje i wywolasz link z tej adnotacji, to wywołana zostaje ta metoda i zwrocony wynik w postaci min. JSONa
przykład klasy:
@Controller
public class SomethingController{
@RequestMapping(value = "/jakis/ciekawy/link", produces="application/json")
@ResponseBody
public List<String> match() {
List<String> lista = new ArrayList<String>();
lista.add("raz");
lista.add("dwa");
lista.add("trzy");
return lista;
}
}
i krótko:
@RequestMapping - dzieki temu mapujesz (po chłopsku tlumaczac) metode na link
produces= - to sugeruje co zostanie zwrocone (json/xml itd.)
@ResponseBody - to sugeruje ze metoda ma zwrocic surowe dane (czyli np json albo xml) a nie nazwe widoku (jak to w springu jest domyślnie zdaje mi sie)
EDIT: zapomnialem dodac, apropos responsebody - uzywajac np. mavena do tworzeina projektów, jesli w sciezce klas masz jacksona(taki przetwarzacz obiektow na json i na odwrot) to spring domyslnie wie, ze ma wyrzucic JSON'a. nie wiem jak w innych frameworkach restowych bo nie probowałem, jeszcze :)
dzieki temu mozesz aplikacja webowa/desktopowa/mobilna albo strona internetowa za pomoca JS odiberac te dane i prezentowac w jakis sposob