{"id":8213,"date":"2021-02-04T11:03:00","date_gmt":"2021-02-04T09:03:00","guid":{"rendered":"https:\/\/programmingpool.com\/understanding-web-services\/"},"modified":"2026-04-07T11:59:48","modified_gmt":"2026-04-07T08:59:48","slug":"understanding-web-services","status":"publish","type":"post","link":"https:\/\/programmingpool.com\/ro\/understanding-web-services\/","title":{"rendered":"\u00cen\u021belegerea serviciilor web"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"8213\" class=\"elementor elementor-8213 elementor-8095\" data-elementor-settings=\"{&quot;page_masthead_image_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:900,&quot;sizes&quot;:[]},&quot;page_masthead_image_height_tablet&quot;:{&quot;unit&quot;:&quot;vh&quot;,&quot;size&quot;:70,&quot;sizes&quot;:[]},&quot;page_masthead_image_height_mobile&quot;:{&quot;unit&quot;:&quot;vh&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;page_masthead_background_position_x&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;page_masthead_background_position_x_tablet&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;page_masthead_background_position_x_mobile&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;page_masthead_background_position_y&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;page_masthead_background_position_y_tablet&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;page_masthead_background_position_y_mobile&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;rhye_hide_title_disabled&quot;:&quot;yes&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-28f8acb e-con-full pb-medium e-flex e-con e-parent\" data-id=\"28f8acb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c52242e elementor-widget elementor-widget-rhye-widget-content-block\" data-id=\"c52242e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"rhye-widget-content-block.default\">\n\t\t\t\t\t\n\t\t<div class=\"section section-content clearfix  \" data-arts-os-animation=\"true\">\n\t\t\t\t\t\t<div class=\"section-content__inner\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"section-content__wrapper-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"w-100\"><\/div>\n\t\t\t\t\t\t\t<div class=\"section-content__text split-text js-split-text\" data-split-text-type=\"lines\" data-split-text-set=\"lines\"><p>Dup\u0103 ce vei citi acest articol, vei dob\u00e2ndi o \u00een\u021belegere cuprinz\u0103toare a serviciilor web, inclusiv scopul acestora, aplica\u021biile, beneficiile \u0219i tehnologiile de baz\u0103 precum arhitectura REST \u0219i protocolul de mesagerie SOAP. Indiferent dac\u0103 e\u0219ti la \u00eenceput de drum \u00een domeniul serviciilor web sau dore\u0219ti s\u0103 \u00ee\u021bi aprofundezi cuno\u0219tin\u021bele, acest ghid \u00ee\u021bi va oferi informa\u021biile necesare pentru a \u00eencepe. <\/p><p>S\u0103 \u00eencepem de la \u00eenceput.<\/p><h2>Ce sunt serviciile web?<\/h2><p>Odat\u0103 cu evolu\u021bia internetului, a ap\u0103rut \u0219i ideea de serviciu web.<\/p><p>Un serviciu web const\u0103 \u00eentr-o colec\u021bie de opera\u021bii accesibile prin re\u021bea \u0219i prin protocolul HTTP. Odat\u0103 ce este disponibil public sau printr-o list\u0103 de acces, beneficiile sale pot fi utilizate de una sau mai multe aplica\u021bii. Acesta asigur\u0103 comunicarea \u00eentre diferite aplica\u021bii software care pot rula pe platforme diferite. \u00cen general, reprezint\u0103 interfa\u021ba web a unei baze de date.   <\/p><p>Serviciile web moderne suport\u0103 at\u00e2t func\u021bionalitate sincron\u0103, c\u00e2t \u0219i asincron\u0103.<\/p><h2>Conceptul REST<\/h2><p>Este un stil arhitectural simplu, bazat pe standardele Web \u0219i HTTP, devenind chiar mai utilizat dec\u00e2t modelul SOAP.<\/p><p>Exist\u0103 cinci metode HTTP principale utilizate pentru definirea opera\u021biilor unui serviciu web RESTful:<\/p><p>POST \u2013 crearea unei resurse;<br>PUT \u2013 actualizarea st\u0103rii unei resurse;<br>PATCH \u2013 actualizare par\u021bial\u0103 a unei resurse;<br>GET \u2013 citirea \/ returnarea unei resurse f\u0103r\u0103 a o modifica;<br>DELETE \u2013 \u0219tergerea unei resurse.<\/p><p>Resursele pot fi reprezentate \u00een mai multe formate: JSON sau XML.<\/p><p>Serviciile web reprezint\u0103 o arhitectur\u0103 scalabil\u0103, deoarece separ\u0103 responsabilit\u0103\u021bile aplica\u021biei client de cele ale serverului. Este un model f\u0103r\u0103 stare (stateless), deoarece serverul nu re\u021bine starea clientului. <\/p><p>Serviciile web sunt adesea utilizate \u00eempreun\u0103 cu un sistem de caching pentru entit\u0103\u021bi care nu sufer\u0103 modific\u0103ri frecvente. Acest lucru duce la cre\u0219terea vitezei de r\u0103spuns a serviciului web. <\/p><p>Exemplu JSON:<\/p><p>{<br>\u201cfirst_name\u201d: \u201dIoan\u201d,<br>\u201clast_name\u201d: \u201dPop\u201d,<br>\u201cage\u201d: 32,<br>\u201cbenefits\u201d: [\u201cscalability\u201d, \u201cinteroperability\u201d, \u201cdistribution\u201d],<br>\u201caddress\u201d: {<br>\u201ccity\u201d: \u201dBaia Mare\u201d,<br>\u201cstreet\u201d: \u201cMihai Eminescu\u201d,<br>\u201cnumber\u201d: 23<br>}<br>}<\/p><h2>Despre SOAP (Simple Object Access Protocol)<\/h2><p>SOAP a fost primul protocol pentru conectarea la serviciile web bazate pe SOA (Service-Oriented Architecture). SOAP este construit peste specifica\u021bia XML \u0219i folose\u0219te HTTP pentru transport. <\/p><p>Un mesaj SOAP este definit ca o structur\u0103 de tip header \u0219i un element body. Header-ul poate con\u021bine informa\u021bii de autentificare sau definirea unor tipuri de date complexe. Elementul body descrie metodele web \u0219i informa\u021bii despre parametrii acestora.  <\/p><p>SOAP Envelope:<\/p><p>&lt;soap:Envelope xmlns:xsi=http:\/\/www.w3.org\/2001\/XMLSchema-instance&gt;<br>&lt;soap:Body&gt;<br>&lt;AWeserviceResponse xmls=http:\/\/tempuri.org\/&gt;<br>&lt;AWebServiceResult&gt;string&lt;\/AWebServiceResul&gt;<br>&lt;AWebserviceResponse&gt;<br>&lt;soap:Body&gt;<br>&lt;\/soap:Envelope&gt;<\/p><h2>Cele mai bune practici de dezvoltare<\/h2><h3><br>Versionare<\/h3><p>Lansarea unei noi versiuni a serviciului web care nu este compatibil\u0103 cu versiunea anterioar\u0103 necesit\u0103 versionarea serviciului web \u0219i men\u021binerea ambelor versiuni at\u00e2t timp c\u00e2t clien\u021bii adopt\u0103 noua versiune.<\/p><h3>Documenta\u021bie<\/h3><p>Serviciile web ar trebui s\u0103 afi\u0219eze informa\u021bii de tip metadate despre opera\u021biile pe care le pot efectua. Fiecare metod\u0103 web ar trebui descris\u0103 prin metoda HTTP, URI, antetele HTTP Request Accept \u0219i Content-Type, posibile coduri de r\u0103spuns HTTP, headere personalizate, exemple de r\u0103spuns \u0219i exemple de corpuri de cerere. <\/p><h3>Logarea<\/h3><p>Informa\u021biile de tip log ar trebui grupate \u00een aceea\u0219i sec\u021biune a cererii \u0219i afi\u0219ate la final, pentru a fi mai u\u0219or de identificat \u00een fi\u0219ierele de log.<\/p><h3>Gestionarea erorilor<\/h3><p>Erorile trebuie raportate c\u0103tre client prin coduri de status HTTP:<\/p><p>200 Ok - Successful<\/p><p>400 - Bad Request<\/p><p>401 - Unauthorized<\/p><p>403 - Forbidden<\/p><p>404 - Not Found<\/p><p>405 - Method not allowed<\/p><p>500 - Internal Server Error<\/p><p>503 - Unavailable Service<\/p><h3>Design URI<\/h3><p>URI-urile ar trebui s\u0103 fie concise, u\u0219or de re\u021binut, lipsite de ambiguitate \u00een ceea ce prive\u0219te resursa gestionat\u0103 \u0219i construite din substantive care descriu resursa, nu din verbe care descriu ac\u021biunea. Ac\u021biunea este descris\u0103 de metodele HTTP, care indic\u0103 implicit tipul de opera\u021bie efectuat\u0103 asupra resursei. Este mai dificil s\u0103 modifici URI-urile unui serviciu web odat\u0103 ce acesta a fost publicat \u0219i utilizat de clien\u021bi. {id}URI<br>\/client\/{id}\/message\/{msg_id}   {msg_id}<\/p><h3>Beneficii<br>Interoperabilitate<\/h3><p>Integrarea cu serviciile web ofer\u0103 o solu\u021bie viabil\u0103 atunci c\u00e2nd se lucreaz\u0103 cu sisteme diferite, sisteme legacy sau aplica\u021bii scrise \u00een alte limbaje de programare. Aceast\u0103 problem\u0103 a primit o aten\u021bie considerabil\u0103 \u00eenc\u0103 din anii 2000. <\/p><h3>U\u0219urin\u021ba de utilizare<\/h3><p>Serviciile web sunt construite pentru a fi accesate prin web, la fel cum o pagin\u0103 HTML este accesat\u0103 prin internet.<\/p><h3>Reutilizarea<\/h3><p>O aplica\u021bie client poate utiliza mai multe servicii web, ad\u0103ug\u00e2nd valoare gestion\u0103rii informa\u021biilor. Prin intermediul serviciilor web, se pot integra diferite aplica\u021bii, \u00een special sisteme legacy. <\/p><h3>Distribu\u021bie<\/h3><p>Distribuirea unui serviciu web utiliz\u00e2nd un server cu func\u021bionalit\u0103\u021bi sincrone sau asincrone este simpl\u0103. \u00cen acela\u0219i timp, o nou\u0103 versiune a serviciului poate fi instalat\u0103 \u0219i devine accesibil\u0103 \u00eentr-un timp scurt. <\/p><h3>Calitatea<\/h3><p>Odat\u0103 construite, serviciile web sunt testate independent de aplica\u021biile client, ceea ce se realizeaz\u0103 \u00eentr-un timp mai scurt dec\u00e2t \u00een cazul aplica\u021biilor monolitice.<\/p><h3>Costuri<\/h3><p>Odat\u0103 ce un set de servicii web este expus, aplica\u021biile client sunt dezvoltate mult mai u\u0219or \u0219i la un cost mai redus, datorit\u0103 timpului mai scurt de dezvoltare \u0219i integrare.<\/p><h3>De ce s\u0103 folosim servicii web?<\/h3><p><br>Pentru a oferi integrare punct-la-punct;<br>Pentru a gestiona sisteme legacy;<br>Pentru a vinde Software-as-a-Service clien\u021bilor;<br>Pentru a pune la dispozi\u021bia diferitelor aplica\u021bii din cadrul organiza\u021biei web API-uri de business;<br>Pentru a reduce costurile de dezvoltare.<\/p><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Dup\u0103 ce vei citi acest articol, vei dob\u00e2ndi o \u00een\u021belegere cuprinz\u0103toare a serviciilor web, inclusiv scopul acestora, aplica\u021biile, beneficiile \u0219i tehnologiile de baz\u0103 precum arhitectura REST \u0219i protocolul de mesagerie SOAP. Indiferent dac\u0103 e\u0219ti la \u00eenceput de drum \u00een domeniul serviciilor web sau dore\u0219ti s\u0103 \u00ee\u021bi aprofundezi cuno\u0219tin\u021bele, acest ghid \u00ee\u021bi va oferi informa\u021biile necesare [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":8214,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[136,229,234],"tags":[235,236,232,237],"class_list":["post-8213","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-perspective","category-resurse","category-training","tag-learning","tag-presentation","tag-team","tag-web-services"],"acf":[],"_links":{"self":[{"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/posts\/8213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/comments?post=8213"}],"version-history":[{"count":9,"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/posts\/8213\/revisions"}],"predecessor-version":[{"id":10194,"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/posts\/8213\/revisions\/10194"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/media\/8214"}],"wp:attachment":[{"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/media?parent=8213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/categories?post=8213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programmingpool.com\/ro\/wp-json\/wp\/v2\/tags?post=8213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}