Desenvolvimento de WebServices RESTful com NodeJS e MongoDB
O documento apresenta Bruno Wiltemburg e Rubens Fernandes como desenvolvedores da empresa Websix e descreve brevemente os conceitos de webservices, REST, HTTP, NodeJS e MongoDB.
Quem somos ● BrunoWiltemburg – brunoew@gmail.com – Founder / CEO na WebSix – Web Developer desde 2004 – @brunoew ● Rubens Fernandes – contato@rubensfernandes.com.br – Gerente de Projetos / Desenvolvedor MEAN na Websix – Twitter: @rubensdrake | Github: /rubensfernandes
WebServices ● Permite integraçãoentre aplicações ● Possui baixo acoplamento ● Permite a (re)utilização dos dados em diversas aplicações (web, mobile, desktop)
5.
HTTP ● Hypertext TransferProtocol ● A base da Web ● Utiliza alguns verbos para realizar a comunicação. – GET (Solicitação de informações, recursos, etc) – POST (Envio de informações) – PUT (Alterações de dados) – DELETE (Exclusão) – OPTIONS – HEAD
6.
REST ● Representational StateTransfer – Design de arquitetura construído para servir aplicações em rede. A aplicação mais comum de REST é a própria World Wide Web, que utilizou REST como base para o desenvolvimento do HTTP 1.1 ● Não é um padrão, é uma METODOLOGIA ● Utiliza-se do protocolo HTTP para transporte de dados
7.
REST ● Client-Server – Olado do client consome dados e trata do que será feito com estes dados. Não se importando com o banco de dados, cache, load balance, etc – O lado server não se preocupa com exibição dos dados, experiência do usuário, etc.
8.
REST ● REST éStateless – Cada requisição deve ser independente. O servidor não armazena nenhuma informação a respeito do cliente. Qualquer informação de estado deve estar no cliente (como sessão, por exemplo)
9.
Padrões de respostasde API’s ● As informações precisam ser disponibilizadas de forma estruturada, organizada e semântica. ● As formas mais comuns de estruturar dados nas APIs – XML ● Estrutura fácil e bem conhecida; ● Muito “pesado” para transmitir em rede ● Muito custoso para decodificar – JSON ● JavaScript Object Notation ● Tem se tornado o padrão para WebServices ● Rápido, fácil de gerar, interpretar e converter para diversas linguagens de programação
Node JS ● https://nodejs.org ●Plataforma para aplicações JavaScript ● Criada por Ryan Dahl em 2009 ● Escrito em cima da engine V8 do Google (usada no Chrome) ● Baseado em eventos ● Não bloqueante ● Permite o desenvolvimento de aplicações escaláveis em rede usando JavaScript no lado do servidor ● É rápido, MUUUITO rápido.
ExpressJS ● http://expressjs.com/ ● Programarutilizando apenas a API HTTP nativa é muito trabalhoso! ● Possui as seguintes características: – MVR (Model-View-Routes); – MVC (Model-View-Controller); – Roteamento de urls via callbacks; – Middleware; – Interface RESTFul; – Suporte a File Uploads;
Mongo DB ● Humongous– Gigantesco ● Criado pela 10Gen em 2007 que virou MongoDB Inc. ● NoSql - Not Only SQL ● Schemaless ● MRNN - Modelo Relacional Não Normalizado ● Salva os dados em forma de documentos BSON ● BSON = JSON binário – oferece suporte a uma tipagem maior de dados ex: Date, Number, String, Object, Mixed ● Tamanho limite para um BSON document é 16MB.
Mongo DB –Limitações de SO ● Coleções não podem ter: $ " " null e começar com system. ● Nome de campos não podem ter . ● Windows – As base de dados não podem conter caracteres: /. "$*<>:|? no nome dela. ● Unix – As base de dados não podem conter caracteres: /. "$ ● Mais informações: https://docs.mongodb.com/manual/reference/limits/
22.
Mongo DB –Terminal ● mongo – inicia o mongo ● show dbs – todas as databases ● use nome_da_base – similar ao mysql ● show collections – mostra todas as coleções (tabelas) da base ● db.colecao.comando – manipulando os dados Exemplos ● use animes; ● db.anime.insert({name: “Naruto”, nota: 9.99}); ● db.anime.find({}); ● db.anime.find({name: “Naruto”}); ● db.anime.update({name: “Naruto”}, “{ $set: { nota: 10 } }”); ● db.anime.remove({_id: “576336737fa263cdd363e4f5”});