{"id":102410,"date":"2021-11-28T09:36:38","date_gmt":"2021-11-28T07:36:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/reliz-postgrest-9-0-0-nadstrojki-dlya-prevrashheniya-bd-v-api-restful"},"modified":"2021-11-28T09:36:38","modified_gmt":"2021-11-28T07:36:39","slug":"reliz-postgrest-9-0-0-nadstrojki-dlya-prevrashheniya-bd-v-api-restful","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/news\/reliz-postgrest-9-0-0-nadstrojki-dlya-prevrashheniya-bd-v-api-restful","title":{"rendered":"Lan\u00e7amento do PostgREST 9.0.0, uma camada que transforma bancos de dados em API RESTful","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Foi lan\u00e7ado o PostgREST 9.0.0, um servidor web aut\u00f4nomo que implementa uma camada leve para o SGBD PostgreSQL, transmitindo objetos de um banco de dados existente para uma API RESTful. Em vez de refletir dados relacionais em objetos (ORM), no PostgREST as visualiza\u00e7\u00f5es s\u00e3o criadas diretamente no banco de dados. A serializa\u00e7\u00e3o de respostas JSON, valida\u00e7\u00e3o de dados e autoriza\u00e7\u00e3o s\u00e3o realizadas no lado do banco de dados. O desempenho do sistema \u00e9 suficiente para lidar com at\u00e9 2000 requisi\u00e7\u00f5es por segundo em uma t\u00edpica <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/server\/dts-newyork\/\"   title=\"servidor\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2689\">servidor<\/a>. O c\u00f3digo do projeto foi escrito na linguagem Haskell e \u00e9 distribu\u00eddo sob a licen\u00e7a MIT.       <\/p>\n<p>Por exemplo, ao usar apenas o mecanismo de privil\u00e9gios no banco de dados, \u00e9 poss\u00edvel fornecer acesso a dados (tabelas, vis\u00f5es e procedimentos armazenados) via protocolo HTTP. Nesse caso, n\u00e3o \u00e9 necess\u00e1rio codificar tal tradu\u00e7\u00e3o e geralmente basta um comando GRANT para que a tabela se torne acess\u00edvel pela API REST. H\u00e1 a possibilidade de configurar acesso por token (JWT) e implementar 'multitenancy' atrav\u00e9s do uso de seguran\u00e7a din\u00e2mica a n\u00edvel de linha (Row Level Security).    <\/p>\n<p>Arquitetonicamente, o PostgREST impulsiona uma arquitetura orientada a dados (Data-Oriented Architecture), onde os microsservi\u00e7os n\u00e3o mant\u00eam estados por conta pr\u00f3pria, mas utilizam um acesso unificado aos dados (Data Access Layer).      <center><img decoding=\"async\" alt=\"Lan\u00e7amento do PostgREST 9.0.0, uma camada que transforma bancos de dados em API RESTful\" src=\"\/wp-content\/uploads\/2021\/11\/9065ad855f12bb16ed2b09369e5b46c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Entre as mudan\u00e7as na nova vers\u00e3o:  <\/p>\n<ul>\n<li class=\"l\"> O esquema de cache de armazenamento adicionou tabelas particionadas, o que permitiu embutir opera\u00e7\u00f5es UPSERT e INSERT na resposta Location, executar consultas OPTIONS e implementar suporte a OpenAPI.\n<li class=\"l\"> Por meio do RPC POST, \u00e9 permitido chamar fun\u00e7\u00f5es com um \u00fanico par\u00e2metro n\u00e3o nomeado.\n<li class=\"l\"> \u00c9 permitido chamar fun\u00e7\u00f5es com um par\u00e2metro JSON sem o cabe\u00e7alho 'Prefer: params=single-object'.\n<li class=\"l\"> \u00c9 permitido fazer upload de dados do tipo bytea nas fun\u00e7\u00f5es, usando solicita\u00e7\u00f5es com 'Content-Type: application\/octet-stream'.\n<li class=\"l\"> \u00c9 permitido fazer upload de texto nas fun\u00e7\u00f5es, usando solicita\u00e7\u00f5es com 'Content-Type: text\/plain'.\n<li class=\"l\"> Foi adicionada a suporte para escapar caracteres dentro de aspas duplas, por exemplo, '?col=in.('Double\\'Quote'), ?col=in.('Back\\\\slash')'.\n<li class=\"l\"> Foi disponibilizada a possibilidade de filtragem de recursos de primeiro n\u00edvel com base em filtros incorporados ('\/projects?select=*,clients!inner(*)&amp;clients.id=eq.12').\n<li class=\"l\"> No operador 'is', \u00e9 permitido o uso do valor 'unknown'.\n<li class=\"l\"> Compatibilidade garantida com PostgreSQL 14 e descontinuada a suporte ao PostgreSQL 9.5.    <\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=56245\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 PostgREST 9.0.0, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043b\u0435\u0433\u043a\u043e\u0439 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a \u0421\u0423\u0411\u0414 PostgreSQL, \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 RESTful API. \u0412\u043c\u0435\u0441\u0442\u043e \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u044b (ORM) \u0432 PostgREST \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0411\u0414 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u0432 JSON, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":102411,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-102410","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 PostgREST 9.0.0, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043b\u0435\u0433\u043a\u043e\u0439 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a \u0421\u0423\u0411\u0414 PostgreSQL, \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 RESTful API.\" \/>\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\/pt\/blog\/news\/reliz-postgrest-9-0-0-nadstrojki-dlya-prevrashheniya-bd-v-api-restful\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\udd47\u0420\u0435\u043b\u0438\u0437 PostgREST 9.0.0, \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0411\u0414 \u0432 API RESTful | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 PostgREST 9.0.0, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043b\u0435\u0433\u043a\u043e\u0439 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a \u0421\u0423\u0411\u0414 PostgreSQL, \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 RESTful API.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/news\/reliz-postgrest-9-0-0-nadstrojki-dlya-prevrashheniya-bd-v-api-restful\" \/>\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=\"2021-11-28T07:36:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-11-28T07:36:39+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\udd47Lan\u00e7amento do PostgREST 9.0.0, uma extens\u00e3o para transformar o banco de dados em API RESTful | ProHoster","description":"Foi lan\u00e7ado o PostgREST 9.0.0, um servidor web aut\u00f4nomo que implementa uma leve camada sobre o SGBD PostgreSQL, transformando objetos de um banco de dados existente em uma API RESTful.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/reliz-postgrest-9-0-0-nadstrojki-dlya-prevrashheniya-bd-v-api-restful","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\udd47\u0420\u0435\u043b\u0438\u0437 PostgREST 9.0.0, \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0411\u0414 \u0432 API RESTful | ProHoster","og:description":"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 PostgREST 9.0.0, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043b\u0435\u0433\u043a\u043e\u0439 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a \u0421\u0423\u0411\u0414 PostgreSQL, \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 RESTful API.","og:url":"https:\/\/prohoster.info\/pt\/blog\/news\/reliz-postgrest-9-0-0-nadstrojki-dlya-prevrashheniya-bd-v-api-restful","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":"2021-11-28T07:36:39+00:00","article:modified_time":"2021-11-28T07:36:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"102410","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":"default","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-11-28 07:37:37","updated":"2026-02-09 21:39:48","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/102410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=102410"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/102410\/revisions"}],"predecessor-version":[{"id":159969,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/102410\/revisions\/159969"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/102411"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=102410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=102410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=102410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}