Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Pettonius 10. 10. 2018, 14:34:42

Název: Jak přenášet data mezi Springem-JS
Přispěvatel: Pettonius 10. 10. 2018, 14:34:42
Ahoj,
chtěl bych se optat, jaké je nelepší možné řešení.
Chci si napsat back-end ve springu, front - javascript/html5/css3. Problém ovšem je, že nevím, jakým způsobem mohu přenášet data. Tuším, že by se to mohlo dělat přes jsona.

Uvedu příklad: Budu mít v @Controlleru, že chci odeslat model, což bude nějaký objekt. V JSP se do <form> píše "model" a pak se s ním dalo dále pracovat. Jak mohu ten model získat na straně javasriptu? Musím si udělat nějaký speciální file? (.json)
A stejný příklad akorát opačně - budu chtít uložit nějaká data, která se vypočtou na straně javascriptu, ale uložit je budu chtít na straně springu. Jak mohu z javascriptu poslat ta data do springu?

Mockrát díky!
Název: Re:Jak přenášet data mezi Springem-JS
Přispěvatel: jehovista 10. 10. 2018, 14:44:24
Jednoduse pouzij @RestController
https://spring.io/guides/tutorials/rest/
Název: Re:Jak přenášet data mezi Springem-JS
Přispěvatel: Natix 10. 10. 2018, 16:30:32
Tady je pak trochu zjednodušený tutoriál. Backend:
https://spring.io/guides/gs/rest-service/

A frontend:
https://spring.io/guides/gs/consuming-rest-jquery/
Název: Re:Jak přenášet data mezi Springem-JS
Přispěvatel: Pettonius 11. 10. 2018, 13:39:57
Děkuji. A jakým způsobem, pokud budu chtít odeslat z JS a přijmout ve springu? Čili opačně?
Název: Re:Jak přenášet data mezi Springem-JS
Přispěvatel: agent 11. 10. 2018, 15:04:54
Úplně stejně, jen součástí prvotního dotaz z frontendu budou ta odesílaná data (v post volání) a nazpátek půjde jen odpověď, třeba že byla úspěšně uložena do DB.
Já v kódu (použitý jQuery post) mám obvykle něco takovéhle (output je JS objekt obsahující odesílaná data, data je serializovaný objekt obsahující odpověď - pokud je odpověď jednoduchá, stačil by i přímo holý string místo JSON serializovaného objektu):
Kód: [Vybrat]
    output = "data=" + JSON.stringify(output);
    $.post("http://server_url", output, function (data, status) {
        if (status == "success") {
           dataFromServer = JSON.parse(data);
           ...zpracování odpovědi...
        } else {
            alert(scriptErrmsgDbconnect);
        }
    })
Do URL si samozřejmě můžeš přidat nějaké GET parametry, které to v handleru na serveru nasměrují na správnou funkci pro zpracovaání POST dat.
Název: Re:Jak přenášet data mezi Springem-JS
Přispěvatel: Natix 11. 10. 2018, 15:57:09
A na straně Springu pak request body obsahující JSON přijmeš a deserializuješ pomocí anotace @RequestBody na parametru metody, viz. kód v https://spring.io/guides/tutorials/rest/

Kód: [Vybrat]
@PostMapping("/employees")
Employee newEmployee(@RequestBody Employee newEmployee) {
return repository.save(newEmployee);
}

A pokud post body bude obsahovat {"name": "Samwise Gamgee", "role": "gardener"}, tak ho Spring automaticky deserializuje na odpovídající datovou třídu.
Název: Re:Jak přenášet data mezi Springem-JS
Přispěvatel: Lopata 12. 10. 2018, 12:46:22
Lopatou !
Název: Re:Jak přenášet data mezi Springem-JS
Přispěvatel: 12345 12. 10. 2018, 13:14:54
Citace
Já v kódu (použitý jQuery post) mám obvykle něco takovéhle

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

Není třeba kvůli tomu importovat 85KB knihovnu.
Název: Re:Jak přenášet data mezi Springem-JS
Přispěvatel: agent 12. 10. 2018, 16:40:08
Pokud máš na mysli jQuery - dlouho jsem psal drobné JS kódy bez ní, používal standardní XMLHttpRequest, ale pár let zpátky jsem zkusil, oblíbil a už jí používám ve všech projektech. A když už jí tam mám, tak proč nevyužívat vše co umí.
Ono to není jen o ajaxu, ale i o práci s DOM, odclonění od nekompatibility browserů...
Frameworky, co mi vnucují nějaké povinné schéma jak něco dělat, rád nemám, ale knihovny rozšiřující možnosti JS a šetřící čas a práci použiju rád.
Název: Re:Jak přenášet data mezi Springem-JS
Přispěvatel: Rott 12. 10. 2018, 16:55:10
JQuery je celkově na ústupu. X let zpátky to byla bomba, to je pravda. Dneska už ale spíš postrádá význam. Zkus použít jQuery třeba v Reactím projektu a počkej, co dostaneš za odezvu od kolegů ;-) Kde to jen jde, tam radši používej standardní API, které by měl znát každý. Knihovnu XY bude znát zlomek lidí. jQuery je v tomhle ohledu trochu výjimka, ale tady je zase špatně ten aspekt, že spousta lidí umí perfektně jQuery, ale ze standardních funkcí pro práci s DOMem vědí velký kulový - netuší, proč to vlastně funguje.