Kaip sukurti REST API su „SpringMVC“ „Java“

Turinys

Ši pamoka išmokys kaip sukurti trumpą REST API „Java“ naudojant „SpringMVC“. Pamatysime GET ir POST instrukcijas, DELETE ir PUT operacijas, jums būtų patogu jas atlikti praktikai. Prieš pradėdamas rekomenduoju atsisiųsti „Eclipse STS“ - gerą IDE programavimui pavasarį, todėl mums kur kas lengviau kurti savo projektus:

ATSISIŲSTI „ECLIPSE STS“

PastabaJei pasirinksite geresnę 1.8 versiją, turite įdiegti „Java“.

Turėkite omenyje kai kuriuos bendrus dalykus

  • Mes turime valdytoją, kuris yra atsakingas už pateiktų užklausų vykdymą, apie klasę, kuri veikia kaip valdytojas, reikia pažymėti @RestController.
  • Kiekvienam URL turime įdiegti metodą. Kiekvienas metodas turi būti derinamas su anotacija @RequestMapping su URL, kuriuo jis lankomas, ir užklausos metodu, taip pat grąžins norimą objektą.

Dabar pamatysime pavyzdį, kuriame turėsime „Person“ klasę ir „PersonController“ asmens valdiklį.

1. Pradėkite projektą
Atidarome STS ir pristatome naują projektą "Pavasario projekto pradininkas“, Mes konfigūruojame parinktis ir pavadinimą bei suteikiame Kitas, Paliksiu tai, kaip matote šiame paveikslėlyje:

DIDELIS

[color = rgb (169,169,169)] Norėdami padidinti, spustelėkite paveikslėlį [/ color]

Kitame ekrane, kuris pasirodys, turime pasirinkti parinktis, kurias naudosime, paliksime viską nepaliestą ir spustelėsime Baigti ir mes jau sukūrėme projektą, turėsime tokią struktūrą (atkreipkite dėmesį, kad aš jau sukūriau 2 klases, kurias ketiname naudoti, o fiksavimas nėra iš STS):

Mes tai pamatysime src / main / java Pakuotės viduje jau sukurta klasė ir joje yra toks kodas:

 @SpringBootApplication public class ExampleApiApplication {public static void main (String [] args) {SpringApplication.run (Application.class, args); }} 
Mes paliekame šią klasę tokią, kokia ji yra, tai padeda mums sekti savo pavyzdžiu. Dabar eikime į klasę pom.xml ir mes patikriname, ar turime šį kodą, jei ne, mes tiesiog jį įtraukiame:
 org.springframework.boot spring-boot-starter-parent 1.3.3. RELEASE org.springframework.boot spring-boot-starter-web 
PastabaIšsaugojus šį failą gali tekti atnaujinti projektą naudojant „maven“, STS turite galimybę tai padaryti (ALT + F5).

Dabar mes pamatysime klases, kurias kuriame, kaip jie atrodo.

2. Asmenų klasė
Pirmiausia įdedame kodą ir tada paaiškiname.

 viešoji klasė Perona {privatus ilgas id = -1; privatus eilutės pavadinimas; privatus int amžius; public Person () {} public Person (String name, int age) {super (); this.name = vardas; this.age = amžius; } public String getName () {return name; } public void setName (Stygos pavadinimas) {this.name = name; } public int getAge () {grąžinimo amžius; } public void setAge (int e) {amžius = e; } public long getId () {grąžinimo ID; } public void setId (ilgas ID) {this.id = id; }} 
Šią klasę nesunku suprasti, tereikia žinoti, kad mums reikia kiekvieno atributo gavimo ir rinkinio, taip pat konstruktoriaus be parametrų, nes juos naudos valdiklis, todėl vengsime dirbti su daugeliu parametrų ir pavasarį suleis juos ir sukurs objektą.

3. „PersonaController“ klasė
Vėlgi, kaip pirmoji dalis yra kodas ir tada paaiškinimas.

 @RestController public class PersonController {private Map people = new ConcurrentHashMap (); privatus Ilgai naudojamasID = 0; @RequestMapping (value = "/ people", method = RequestMethod.GET) public Collection damePeople () {return people.values ​​(); } @RequestMapping (value = "/ people", method = RequestMethod.POST) @ResponseStatus (HttpStatus.CREATED) public Person addPersona (@RequestBody Person p) {idUsado ++; p.setId (idUsado); people.put (idUsado, p); grąžinti p; } @RequestMapping (value = " / people / {id}", method = RequestMethod.GET) public ResponseEntity getPersona (@PathVariable long id) {Asmuo p = people.get (id); if (p! = null) grąžina naują „ResponseEntity“ (p, HttpStatus.OK); grąžinti naują „ResponseEntity“ („HttpStatus.NOT_FOUND“); }}
mes nesinaudosime duomenų baze Mes sukuriame žemėlapį, jei turėtume duomenų bazę, tai būtų pakeista jo saugykla, o kintamasis „idUsado“ nebūtų būtinas, tačiau DB pridėjimas nėra mokymo programos tikslas.
Anotacijos viduje „RequestMapping“ Matome, kad taip pat turime metodą, pagal numatytuosius nustatymus jis yra GET, todėl tais metodais jo nebūtina pridėti, tačiau jis nekenkia.

Mes turime 3 metodus
duok žmonėmsTai padarys visus žmones, kuriuos turime mūsų žemėlapyje (people.values ​​()). Tai neturi didelių komplikacijų.

addPersonJis naudojamas asmeniui įtraukti į mūsų kolekciją, matote, kad mūsų turimas parametras yra pažymėtas @RequestBody, tai mes gauname iš kliento (užklausos turinio). Anotacija

 @ResponseStatus (HttpStatus.CREATED)
Nustatyta, kad atsakymo kodas grąžintų 201. Kūne galima pamatyti, kaip kiekvieną kartą, kai jis vadinamas id, padidėja vienu, kad jis būtų unikalus ir mes jį priskiriame asmeniui, tada pridedame jį prie žemėlapio ir galiausiai funkcijos atsako tekstas yra tas pats asmuo.

getPersonPrašomas asmuo bus grąžintas mums per ID. Čia mes gauname, kad funkcija grįžta

 „ResponseEntity“
Taip yra grįžti a Gerai ir asmuo tuo atveju, jei yra arba NERASTAS. Parametras čia pažymėtas @PathVariable, šio parametro reikšmė bus {id} kurį matote „RequestMapping“ ir kurį mes įtraukiame į URL, pvz., / people / 1 šią funkciją iškviečia su ID 1.

Pastaba„RequestMapping“ anotaciją galite pateikti tiesiai virš klasės, kaip parodyta žemiau:

 @RestController @RequestMapping ("/ people") viešosios klasės "PersonaController" {…}
Jei tai padarysite, išvengsite žmonių kartojimo kiekvienu metodu ir galite tiesiog pateikti šiuos dalykus:
 @RequestMapping (value = "/", method = RequestMethod.GET) 
Jei yra mažai metodų, tai gali būti neverta, tačiau daugeliui tai tikrai geriausias pasirinkimas.

Na, mes baigėme šią mažą API.

4. Kaip vykdyti projektą
Norėdami vykdyti projektą, pasirinkite savo projektą, meniu juostoje pamatysite baltą trikampį žalio apskritimo viduje (įprastas važiavimas elipsėje), spustelėkite mažą juodą trikampį dešinėje, eikite į Runos ir spustelėkite Pavasario įkrovos programa.

DIDELIS

[color = # a9a9a9] Norėdami padidinti, spustelėkite paveikslėlį [/ color]

Dabar, jei norite išplėsti pavyzdį, rekomenduoju pridėti užklausų teikimo metodus PUT Y IŠTRINTI, turėsite žinoti asmens, kurį norite keisti, ID, todėl gausite jį kaip ir paskutinėje funkcijoje, o PUT taip pat turėsite siųsti duomenis, kaip tai darėme POST funkcijoje.

Jeigu nori išbandykite savo REST API nereikia užprogramuoti kliento pateikti užklausų galite naudoti paštininką, tai „Google Chrome“ papildinys:

Čia galite pasirinkti norimą užklausos tipą, užpildyti antraštes ir turinį, kurie turi būti išsiųsti, jei reikia autentifikavimo ir pan. Tai labai išsami programa.

DIDELIS

[color = # a9a9a9] Norėdami padidinti, spustelėkite paveikslėlį [/ color]

Pavyzdžiui, gaukite užklausą, kad visi žmonės, esantys API, veiktų naudojant „localhost“ ir klausytųsi 80 prievado:

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave