{"id":92433,"date":"2020-08-27T07:42:01","date_gmt":"2020-08-27T05:42:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda"},"modified":"2020-08-27T07:42:01","modified_gmt":"2020-08-27T05:42:01","slug":"viennanet-nabor-bibliotek-dlya-backenda","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","title":{"rendered":"ViennaNET: un insieme di librerie per il backend","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao a tutti!<\/p>\n<p><\/p>\n<p>Siamo una comunit\u00e0 di sviluppatori .NET della Raiffeisen Bank e vogliamo parlarvi di un insieme di librerie infrastrutturali su .NET Core per la rapida creazione di microservizi con un'unica ecosistema. Lo abbiamo reso Open Source! <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/494830\/\"><img decoding=\"async\" alt=\"ViennaNET: un insieme di librerie per il backend\" src=\"\/wp-content\/uploads\/2020\/08\/eb063b3083da2c39f7f3c40a560c30ab.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Un po' di storia<\/h3>\n<p><\/p>\n<p>Una volta avevamo un grande progetto monolitico che si stava gradualmente trasformando in un insieme di microservizi (sulle peculiarit\u00e0 di questo processo \u00e8 possibile leggere in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/458404\/\">questo articolo<\/a><\/noindex>). Durante il processo ci siamo trovati di fronte al problema che, quando creavamo nuovi microservizi, dovevamo spesso copiare varie soluzioni infrastrutturali \u2013 come la configurazione del logging, il lavoro con il DB, WCF e cos\u00ec via. Su questo progetto lavorava un solo team, e tutti erano gi\u00e0 abituati a un approccio consolidato al lavoro con l'infrastruttura. Pertanto, abbiamo estratto il codice comune in un repository separato, abbiamo raccolto le librerie in pacchetti Nuget e le abbiamo inserite nel nostro repository Nuget interno.<\/p>\n<p><\/p>\n<p>Il tempo passava, il progetto si frantumava gradualmente, e nasceva il desiderio di creare nuovi moduli per la parte client con un moderno framework Js e di eseguirli nel browser. Abbiamo iniziato a passare da WCF\/SOAP a REST\/HTTP, quindi avevamo bisogno di nuove librerie per avviare rapidamente servizi basati su AspNet WebApi. La prima versione su .Net Framework 4.5 \u00e8 stata realizzata dal nostro architetto quasi durante il tempo libero, ma gi\u00e0 permetteva di avviare un servizio con tre righe in Program.cs, che conteneva autenticazione (NTLM), logging, Swagger, IoC\/DI basato su Castle Windsor, clienti HTTP configurati per inoltrare vari header per garantire un logging end-to-end in tutto il progetto. E tutto questo poteva essere ulteriormente configurato direttamente nel file di configurazione del servizio.<\/p>\n<p><\/p>\n<p>Tuttavia, non tutto \u00e8 andato liscio: questa libreria risultava estremamente rigida nell'implementazione di nuovi moduli. Ad esempio, se era necessario aggiungere un middleware speciale, era necessario creare un nuovo assembly e derivarsi dalla classe base che avviava il servizio, il che era estremamente scomodo. Fortunatamente, tali casi non erano molto numerosi.<\/p>\n<p><\/p>\n<h3>Era l'epoca di Docker e Kubernetes<\/h3>\n<p><\/p>\n<p>\u00c8 arrivato il momento in cui anche noi siamo stati coinvolti nella tendenza di Docker e Kubernetes, che abbiamo seguito con attenzione: era un'ottima opportunit\u00e0 per progredire con le tecnologie verso .Net Core. Questo significa che avremo bisogno di una nuova infrastruttura per lanciare i servizi: alcune librerie sono migrati da .Net Framework a .Net Standard e .Net Core praticamente senza modifiche, altre con piccoli miglioramenti. Ma soprattutto, volevamo rielaborare la funzionalit\u00e0 legata al lancio dei servizi su AspNet Core.<\/p>\n<p><\/p>\n<p>Il primo passo \u00e8 stato considerare un concetto che eliminasse il principale svantaggio della versione precedente: la mancanza di flessibilit\u00e0. Pertanto, \u00e8 stato deciso di rendere l'intero sistema di librerie il pi\u00f9 indipendente e modulare possibile, assemblando i servizi necessari come un costruttore.<\/p>\n<p><\/p>\n<p>L'obiettivo principale \u00e8 creare un approccio unificato che descriva come interagire con database, bus e altri servizi. Ci siamo sforzati di rendere le integrazioni rapide e senza problemi, in modo che gli sviluppatori potessero concentrarsi sulla scrittura della logica aziendale e non sull'infrastruttura, che \u00e8 gi\u00e0 pronta. Il repository comune aiuta a migliorare l'esperienza di interazione all'interno dei team: quando si utilizzano infrastrutture interne molto simili, \u00e8 pi\u00f9 facile integrarsi nel processo di sviluppo di un altro team e scambiare expertise.<\/p>\n<p><\/p>\n<h3>E perch\u00e9 abbiamo bisogno dell'Open Source?<\/h3>\n<p><\/p>\n<p>Vogliamo dimostrare la maturit\u00e0 della nostra expertise e ricevere un feedback di qualit\u00e0: una persona esterna alla banca pu\u00f2 portare qualcosa di nuovo. Siamo anche interessati all'evoluzione delle pratiche di lavoro con microservizi e DDD su .NET nel settore, magari qualcuno vorr\u00e0 portare con s\u00e9 alcune parti del framework. <\/p>\n<p><\/p>\n<h3>In effetti, ViennaNET<\/h3>\n<p><\/p>\n<p>Ora vediamo tutto in dettaglio. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">Il codice sorgente completo \u00e8 disponibile qui<\/a><\/noindex>. <\/p>\n<p><\/p>\n<h4>ViennaNET.WebApi.*<\/h4>\n<p><\/p>\n<p>Questo insieme di librerie consiste nel \"nucleo\" ViennaNET.WebApi, che contiene una classe costruttore per il servizio CompanyHostBuilder, e un insieme di configuratori ViennaNET.WebApi.Configurators.*, ognuno dei quali permette di aggiungere e configurare una certa funzionalit\u00e0 nel servizio creato. Tra i configuratori, si possono trovare l'integrazione del logging, la diagnostica, il tipo di autenticazione e autorizzazione, Swagger, ecc.<\/p>\n<p><\/p>\n<p>ViennaNET.WebApi.Runners.* contiene costruttori di servizi preconfigurati. Questi pacchetti permettono di non dover ricordare ogni volta, creando un nuovo servizio, quali configuratori devono essere collegati. Tuttavia, non limitano in alcun modo la funzionalit\u00e0 del costruttore di servizi.<\/p>\n<p><\/p>\n<h4>ViennaNET.Mediator.*<\/h4>\n<p><\/p>\n<p>Librerie che consentono di creare un bus interno per la mediazione di comandi e richieste all'interno del servizio. Questo approccio permette di ridurre il numero di iniezioni DI a una sola, ad esempio nei controller. In questo modo \u00e8 possibile aggiungere vari decoratori alle richieste, uniformando la loro gestione e riducendo il codice. <\/p>\n<p><\/p>\n<h4>ViennaNET.Validation<\/h4>\n<p><\/p>\n<p>Pacchetto contenente un insieme di classi per la creazione di regole e sequenze di validazione. \u00c8 molto comodo per implementare la validazione di dominio, poich\u00e9 consente di descrivere ogni condizione aziendale come una semplice e singola regola. <\/p>\n<p><\/p>\n<h4>ViennaNET.Redis<\/h4>\n<p><\/p>\n<p>Libreria con wrapper per un uso semplice di Redis come cache in memoria.<\/p>\n<p><\/p>\n<h4>ViennaNET.Specifications<\/h4>\n<p><\/p>\n<p>Pacchetto che contiene classi che implementano il pattern \"Specificazione\".<\/p>\n<p><\/p>\n<p>Questo non \u00e8 tutto ci\u00f2 che abbiamo nel nostro pacchetto. Puoi vedere il resto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">nel repository su GitHub<\/a><\/noindex>. Presto \u00e8 prevista la pubblicazione delle nostre librerie per il lavoro con i database in OpenSource.<\/p>\n<p><\/p>\n<p>Grazie per l'attenzione, attendiamo i vostri commenti e pull request.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/494830\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u0412\u044b\u0432\u0435\u043b\u0438 \u0435\u0433\u043e \u0432 Open Source! \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u0432 \u043d\u0430\u0431\u043e\u0440 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435). \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92434,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92433","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47ViennaNET: \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f backend\u2019\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-27T05:42:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-27T05:42:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47ViennaNET: un insieme di librerie per il backend | ProHoster","description":"Ciao a tutti! Siamo una comunit\u00e0 di sviluppatori .NET di Raiffeisenbank e vogliamo parlarvi di un insieme di librerie infrastrutturali su .NET Core per la rapida creazione di microservizi con un ecosistema unificato.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47ViennaNET: \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f backend\u2019\u0430 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-27T05:42:01+00:00","article:modified_time":"2020-08-27T05:42:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92433","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:08:24","updated":"2022-10-03 07:52:44","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/92433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=92433"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/92433\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/92434"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=92433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=92433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=92433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}