desenvolvimento de webservices restful com nodejs e mongodb

Download Desenvolvimento de WebServices RESTful com NodeJS e MongoDB

If you can't read please download the document

Upload: websix

Post on 07-Apr-2017

170 views

Category:

Software


3 download

TRANSCRIPT

Desenvolvimento de WebServices RESTFul com NodeJs e MongoDB

Quem somos

Bruno [email protected]

Founder / CEO na WebSix

Web Developer desde 2004

@brunoew

Rubens [email protected]

Gerente de Projetos / Desenvolvedor MEAN na Websix

Twitter: @rubensdrake | Github: /rubensfernandes

WebService

Fonte de dados acessada por uma rede local ou pela internet

WebServices

Permite integrao entre aplicaes

Possui baixo acoplamento

Permite a (re)utilizao dos dados em diversas aplicaes (web, mobile, desktop)

HTTP

Hypertext Transfer Protocol

A base da Web

Utiliza alguns verbos para realizar a comunicao. GET (Solicitao de informaes, recursos, etc)

POST (Envio de informaes)

PUT (Alteraes de dados)

DELETE (Excluso)

OPTIONS

HEAD

REST

Representational State TransferDesign de arquitetura construdo para servir aplicaes em rede. A aplicao mais comum de REST a prpria World Wide Web, que utilizou REST como base para o desenvolvimento do HTTP 1.1

No um padro, uma METODOLOGIA

Utiliza-se do protocolo HTTP para transporte de dados

REST

Client-ServerO lado do client consome dados e trata do que ser feito com estes dados. No se importando com o banco de dados, cache, load balance, etc

O lado server no se preocupa com exibio dos dados, experincia do usurio, etc.

REST

REST StatelessCada requisio deve ser independente. O servidor no armazena nenhuma informao a respeito do cliente. Qualquer informao de estado deve estar no cliente (como sesso, por exemplo)

Padres de respostas de APIs

As informaes precisam ser disponibilizadas de forma estruturada, organizada e semntica.

As formas mais comuns de estruturar dados nas APIsXMLEstrutura fcil e bem conhecida;

Muito pesado para transmitir em rede

Muito custoso para decodificar

JSONJavaScript Object Notation

Tem se tornado o padro para WebServices

Rpido, fcil de gerar, interpretar e converter para diversas linguagens de programao

NodeJS

Node JS

https://nodejs.org

Plataforma para aplicaes JavaScript

Criada por Ryan Dahl em 2009

Escrito em cima da engine V8 do Google (usada no Chrome)

Baseado em eventos

No bloqueante

Permite o desenvolvimento de aplicaes escalveis em rede usando JavaScript no lado do servidor

rpido, MUUUITO rpido.

Quem est usando NodeJS?

NPM

https://www.npmjs.com

Gerenciador de pacotes do Node

+ de 250.000 mdulos hospedadosnpm install [package]

ExpressJS

http://expressjs.com/

Programar utilizando apenas a API HTTP nativa muito trabalhoso!

Possui as seguintes caractersticas:MVR (Model-View-Routes);

MVC (Model-View-Controller);

Roteamento de urls via callbacks;

Middleware;

Interface RESTFul;

Suporte a File Uploads;

Express JS

Hello World

Mongo DB

Mongo DB

Humongous Gigantesco

Criado pela 10Gen em 2007 que virou MongoDB Inc.

NoSql - Not Only SQL

Schemaless

MRNN - Modelo Relacional No Normalizado

Salva os dados em forma de documentos BSON

BSON = JSON binrio oferece suporte a uma tipagem maior de dados ex: Date, Number, String, Object, Mixed

Tamanho limite para um BSON document 16MB.

Mongo DB

SQL = mongodb

tabela = colees

colunas = campos

row = documentos

Select = find

insert = insert

update = update

delete = remove

Mongo DB Limitaes de SO

Colees no podem ter: $ " " null e comear com system.

Nome de campos no podem ter .

Windows As base de dados no podem conter caracteres: /\. "$*:|? no nome dela.

UnixAs base de dados no podem conter caracteres: /\. "$

Mais informaes: https://docs.mongodb.com/manual/reference/limits/

Mongo DB Terminal

mongo inicia o mongo

show dbs todas as databases

use nome_da_base similar ao mysql

show collections mostra todas as colees (tabelas) da base

db.colecao.comando manipulando os dadosExemplos

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});

Exemplo usando driver nativo

No MongoDB no precisamos estruturar as colees igual o SQL, MAS...

Mongo DB

ODM

Schemaless !== Schemafree

Object Data Manager

Permite criar esquemas

Mongoose

Mongoose

http://mongoosejs.com/

Motivao: Fazer lgica de negcios e validaes no mongo uma chatice.

Easy way ;)

Mo na massa