Stručný sprievodca prácou s webovými službami v aplikácii Groovy

1. Prehľad

V dnešnej dobe vidíme celý rad spôsobov, ako vystaviť údaje aplikáciou cez web.

Aplikácia na odhalenie svojich rozhraní API často používa webovú službu SOAP alebo REST. Zvážiť však môžete aj streamovacie protokoly ako RSS a Atom.

V tomto rýchlom výučbe preskúmame niekoľko praktických spôsobov práce s webovými službami v aplikácii Groovy pre každý z týchto protokolov.

2. Vykonajte požiadavky HTTP

Na začiatok vykonajme jednoduchú požiadavku HTTP GET pomocou URL trieda. Počas nášho prieskumu spotrebujeme API Postman Echo.

Najprv zavoláme openConnection metóda URL triedy a potom nastavte requestMethod získať:

def postmanGet = nová URL ('// postman-echo.com/get') def getConnection = postmanGet.openConnection () getConnection.requestMethod = 'ZÍSKAŤ' uplatnenie getConnection.responseCode == 200

Podobne môžeme urobiť požiadavku POST nastavením requestMethod do POST:

def postmanPost = nová URL ('// postman-echo.com/post') def postConnection = postmanPost.openConnection () postConnection.requestMethod = 'POST' uplatniť postConnection.responseCode == 200

Parametre tiež môžeme odovzdať požiadavke POST pomocou outputStream.withWriter:

def form = "param1 = Toto je parameter požiadavky." postConnection.doOutput = true def text postConnection.with {outputStream.withWriter {outputStreamWriter -> outputStreamWriter << form} text = content.text} uplatniť postConnection.responseCode == 200

Tu, Groovy s uzáver vyzerá celkom šikovne a robí kód čistejším.

Použime JsonSlurper analyzovať String odpoveď do JSON:

JsonSlurper jsonSlurper = nový JsonSlurper () presadzuje jsonSlurper.parseText (text) ?. json.param1 == "Toto je parameter požiadavky."

3. Kanály RSS a Atom

Informačné kanály RSS a Atom sú bežné spôsoby, ako na webe zverejniť obsah, ako sú správy, blogy a technické fóra.

Oba kanály majú tiež formát XML. Preto môžeme použiť Groovy's XMLParser triedy na analýzu obsahu.

Poďme si prečítať niekoľko najdôležitejších správ zo služby Google News pomocou ich informačného kanála RSS:

def rssFeed = new XmlParser () .parse ("// news.google.com/rss?hl=sk-US&gl=US&ceid=US:en") def stories = [] (0..4) .each {def item = rssFeed.channel.item.get (it) stories << item.title.text ()} uplatniť stories.size () == 5

Podobne si môžeme prečítať zdroje Atom. Kvôli zmenám v špecifikáciách oboch protokolov však budeme v informačných kanáloch Atom pristupovať k obsahu odlišne:

def atomFeed = new XmlParser () .parse ("// news.google.com/atom?hl=sk-US&gl=US&ceid=US:en") def stories = [] (0..4) .each {def entry = atomFeed.entry.get (it) stories << entry.title.text ()} uplatniť stories.size () == 5

Rozumieme tiež, že Groovy podporuje všetky knižnice Java, ktoré Groovy podporuje. Preto určite môžeme na čítanie informačných kanálov RSS použiť API Rome.

4. Žiadosť a odpoveď na SOAP

SOAP je jedným z najpopulárnejších protokolov webových služieb, ktoré aplikácie používajú na zverejnenie svojich služieb na webe.

Na konzumáciu rozhraní SOAP API použijeme knižnicu groovy-wslite. Pridajme k našej najnovšiu závislosť pom.xml:

 com.github.groovy-wslite groovy-wslite 1.1.3 

Alternatívne môžeme najnovšiu závislosť pridať pomocou nástroja Gradle:

skupina kompilácií: „com.github.groovy-wslite“, názov: „groovy-wslite“, verzia: „1.1.3“

Alebo ak chceme napísať Groovy skript. Môžeme ho pridať priamo pomocou @Uchmatnúť:

@Grab (group = 'com.github.groovy-wslite', modul = "groovy-wslite", verzia = "1.1.3")

Knižnica groovy-wslite poskytuje SOAPClient triedy na komunikáciu so SOAP API. Zároveň má SOAPMessageBuilder triedy na vytvorenie správy s požiadavkou.

Poďme spotrebovať SOAP službu na prevod čísel pomocou SOAPClient:

def url = "//www.dataaccess.com/webservicesserver/numberconversion.wso" def soapClient = nový SOAPClient (url) def message = nový SOAPMessageBuilder (). build ({body {NumberToWords (xmlns: "//www.dataaccess. com / webservicesserver / ") {ubiNum (123)}}}) def response = soapClient.send (message.toString ()); def slová = response.NumberToWordsResponse uplatniť slová == "stodvadsať tri"

5. Žiadosť a odpoveď REST

REST je ďalší populárny architektonický štýl používaný na vytváranie webových služieb. Rozhrania API sú tiež vystavené na základe metód HTTP, ako sú GET, POST, PUT a DELETE.

5.1. ZÍSKAJTE

Na konzumáciu rozhraní REST API použijeme už diskutovanú knižnicu groovy-wslite. Poskytuje RESTClient triedy pre bezproblémovú komunikáciu.

Urobme GET požiadavku na už diskutované Postman API:

RESTClient client = new RESTClient ("// postman-echo.com") def path = "/ get" def response try {response = client.get (path: path) assert response.statusCode = 200 assert response.json? .Headers ? .host == "postman-echo.com"} catch (RESTClientException e) {assert e? .response? .statusCode! = 200}

5.2. POST

Teraz urobme požiadavku POST na Postman API. Zároveň odovzdáme parametre formulára ako JSON:

client.defaultAcceptHeader = ContentType.JSON def path = "/ post" def params = ["foo": 1, "bar": 2] def response = client.post (path: path) {type ContentType.JSON json params} tvrdiť response.json? .data == parametre 

Tu sme nastavili JSON ako predvolenú hlavičku prijatia.

6. Autentifikácia pre webovú službu

S rastúcim počtom webových služieb a aplikácií, ktoré navzájom komunikujú, sa odporúča mať zabezpečenú webovú službu.

Ako výsledok, dôležitá je kombinácia HTTPS a autentifikačného mechanizmu ako Basic Auth a OAuth.

Aplikácia sa preto musí pri používaní API webovej služby autentifikovať.

6.1. Základné overenie

Môžeme použiť už diskutované RESTClient trieda. Použime HTTPBasicAuthorization trieda s povereniami na vykonanie základného overenia:

def path = "/ basic-auth" client.authorization = nový HTTPBasicAuthorization ("poštár", "heslo") response = client.get (cesta: cesta) presadiť response.statusCode == 200 presadiť response.json? .authenticated == pravda

Prípadne môžeme priamo odovzdať poverenia (kódované Base64) v priečinku hlavičky parameter:

def response = client .get (cesta: cesta, hlavičky: ["Autorizácia": "Základné cG9zdG1hbjpwYXNzd29yZA =="])

6.2. OAuth 1.0

Podobne môžeme vytvoriť požiadavku OAuth 1.0, ktorá odovzdá parametre auth, ako je spotrebiteľský kľúč a spotrebiteľské tajomstvo.

Pretože však nemáme zabudovanú podporu pre OAuth 1.0, ako to robíme pre ostatné mechanizmy, budeme si musieť prácu urobiť sami:

def path = "/ oauth1" def params = [oauth_consumer_key: "RKCGzna7bv9YD57c", oauth_signature_method: "HMAC-SHA1", oauth_timestamp: 1567089944, oauth_nonce: "URT7v4", oauth_version_r = "R" = nový RESTClient ("// postman-echo.com") .get (cesta: cesta, dotaz: parametre) uplatniť response.statusCode == 200 uplatniť response.statusMessage == "OK" uplatniť response.json.status == " prejsť "

7. Záver

V tomto tutoriáli sme preskúmali niekoľko užitočných spôsobov, ako pracovať s webovými službami v Groovy.

Zároveň sme videli ľahký spôsob čítania informačného kanála RSS alebo Atom.

Implementácie kódu sú ako obvykle k dispozícii na serveri GitHub.


$config[zx-auto] not found$config[zx-overlay] not found