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

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)