Upgrade to Pro — share decks privately, control downloads, hide ads and more …

pREST A RESTful API from any PostgreSQL database

pREST A RESTful API from any PostgreSQL database

How to use pREST

Avatar for Felipe Oliveira

Felipe Oliveira

April 18, 2017
Tweet

More Decks by Felipe Oliveira

Other Decks in Programming

Transcript

  1. 5/4/2017 pREST http://localhost:3999/pREST_Usage/prest.slide#1 1/26 pREST A RESTful API from any

    PostgreSQL database 18 April 2017 Felipe Paes de Oliveira Go Developer at Nuveo
  2. 5/4/2017 pREST http://localhost:3999/pREST_Usage/prest.slide#1 2/26 Como surgiu o pREST? Nuveo v2

    Remodelando para uma estrutura menos rigida Nuveo v1 em Go e MongoDB Nuveo v2 Go e PostgreSQL com suporte a JSONB Reescrever todas as queries de todos os sistemas postgREST (https://github.com/begri s/postgrest, Haskell), di cil de manter em produção
  3. 5/4/2017 pREST http://localhost:3999/pREST_Usage/prest.slide#1 3/26 Sobre o pREST Primeiro commit 22

    de Novembro de 2016 (by @avelino) 7 releases (versão atual v0.1.6) Suporte as operações de CRUD Suporte a JOIN Suporte a execução de scripts SQL Autenticação via JWT Sistema autorização CORS Con guração: Flag > Env > TOML le Sistema de migrations Pode ser usado como aplicação ou package
  4. 5/4/2017 pREST http://localhost:3999/pREST_Usage/prest.slide#1 4/26 Padrão pREST URLs: /DATABASE/SCHEMA/TABLE HTTP GET

    = select HTTP POST = insert HTTP DELETE = delete HTTP PUT = update HTTP PATCH = update Query string não começa com _ = clausula where Query string começa com _ = query operations eg: JOIN ou paginação { "data": { "FIELD1": "string value", "FIELD2": 1234567890 } }
  5. 5/4/2017 pREST http://localhost:3999/pREST_Usage/prest.slide#1 7/26 Operadores Na clausula where podemos omitir

    o operador $eq /DATABASE/SCHEMA/TABLE?FIELD=VALUE = /DATABASE/SCHEMA/TABLE?FIELD=$eq.VALUE
  6. 5/4/2017 pREST http://localhost:3999/pREST_Usage/prest.slide#1 10/26 Usando o pREST como package func

    main() { // Reorder middlewares middlewares.MiddlewareStack = []negroni.Handler{ negroni.Handler(negroni.NewLogger()), negroni.Handler(negroni.NewRecovery()), negroni.Handler(negroni.HandlerFunc(CustomMiddleware)), } // Get pREST app n := middlewares.GetApp() // Get pPREST router r := router.Get() // Register custom routes r.HandleFunc("/ping", Pong).Methods("GET") // Call pREST cmd cmd.Execute() }
  7. 5/4/2017 pREST http://localhost:3999/pREST_Usage/prest.slide#1 22/26 Desvantagens O código não deixa claro

    que está acessando o banco de dados Esconde muito a complexidade do código
  8. 5/4/2017 pREST http://localhost:3999/pREST_Usage/prest.slide#1 25/26 Thank you Felipe Paes de Oliveira

    Go Developer at Nuveo [email protected] (mailto:[email protected]) https://www.felipeweb.net.br (https://www.felipeweb.net.br) @_felipeweb (http://twitter.com/_felipeweb)