English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
REST (Representational State Transfer, abreviado como REST) é um estilo de arquitetura de software proposto pelo Dr. Roy Fielding.2foi proposto em sua tese de doutorado em 000.
A transferência de estado representacional é um conjunto de restrições e princípios arquitetônicos. Aplicações ou designs que atendem a essas restrições e princípios são considerados RESTful. É importante notar que o REST é um estilo de design e não um padrão. O REST geralmente se baseia em protocolos e padrões amplamente utilizados, como HTTP, URI, XML (um subconjunto do linguagem de marcação aberta) e HTML (uma aplicação do linguagem de marcação aberta). O REST geralmente usa o formato de dados JSON.
A seguir estão os quatro métodos básicos da arquitetura REST:
GET - Usado para obter dados.
PUT - Usado para atualizar ou adicionar dados.
DELETE - Usado para excluir dados.
POST - Usado para adicionar dados.
Um serviço web é um aplicativo independente de plataforma, de baixa耦合, autônomo e baseado em web, que pode ser descrito, publicado, descoberto, coordenado e configurado usando o padrão aberto XML (um subconjunto do linguagem de marcação aberta), para desenvolver aplicativos distribuídos de interoperabilidade.
Os serviços web baseados na arquitetura REST são chamados de RESTful.
Devido às suas características leves e ao transporte direto de dados via HTTP, o método RESTful de serviços web se tornou a substituição mais comum. Clientes podem ser implementados em várias linguagens (por exemplo, Java, Perl, Ruby, Python, PHP e Javascript [inclusive do Ajax]).
Os serviços web RESTful podem ser acessados por meio de clientes automatizados ou aplicativos que representam o usuário. No entanto, a simplicidade desses serviços permite que os usuários interajam diretamente com eles, construindo um URL GET usando seus navegadores da web e lendo o conteúdo retornado.
Primeiro, criamos um arquivo de dados JSON resource users.json, conforme mostrado a seguir:
{ "user1" : { "name" : "Sea", "password" : "password1", "profession" : "teacher", "id": 1 }, "user2" : { "name" : "suresh", "password" : "password2", "profession" : "librarian", "id": 2 }, "user3" : { "name" : "ramesh", "password" : "password3", "profession" : "clerk", "id": 3 } }
Baseados nos dados acima, criamos o seguinte RESTful API:
Número | URI | Método HTTP | Enviar conteúdo | Resultado |
---|---|---|---|---|
1 | listUsers | GET | Vazio | Mostrar lista de todos os usuários |
2 | addUser | POST | Cadeia JSON | Adicionar novo usuário |
3 | deleteUser | DELETE | Cadeia JSON | Deletar Usuário |
4 | :id | GET | Vazio | Mostrar detalhes do usuário |
Neste código, criamos uma API RESTful listUsersusado para ler a lista de informações dos usuários, o código do arquivo server.js é mostrado a seguir:
var express = require('express'); var app = express(); var fs = require("fs"); app.get('/listUsers', function (req, res) { fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { console.log( data ); res.end( data ); }); } var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Exemplo de Aplicação, Endereço de Acesso http://%s:%s", host, port) }
Em seguida, execute os seguintes comandos:
$ node server.js Exemplo de Aplicação, Endereço de Acesso http://0.0.0.0:8081
Acesse no navegador http://127.0.0.1:8081/listUsers, resultado conforme mostrado a seguir:
{ "user1" : { "name" : "Sea", "password" : "password1", "profession" : "teacher", "id": 1 }, "user2" : { "name" : "suresh", "password" : "password2", "profession" : "librarian", "id": 2 }, "user3" : { "name" : "ramesh", "password" : "password3", "profession" : "clerk", "id": 3 } }
Neste código, criamos uma API RESTful addUserusado para adicionar novos dados de usuário, o código do arquivo server.js é mostrado a seguir:
var express = require('express'); var app = express(); var fs = require("fs"); //Novos dados do usuário adicionado var user = { "user4" : { "name" : "mohit", "password" : "password4", "profession" : "teacher", "id": 4 } } app.get('/addUser', function (req, res) { // Ler dados existentes fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { data = JSON.parse( data ); data["user4"] = user["user4"]; console.log( data ); res.end( JSON.stringify(data)); }); } var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Exemplo de Aplicação, Endereço de Acesso http://%s:%s", host, port) }
Em seguida, execute os seguintes comandos:
$ node server.js Exemplo de Aplicação, Endereço de Acesso http://0.0.0.0:8081
Acesse no navegador http://127.0.0.1:8081/addUser, resultado conforme mostrado a seguir:
{ usuário1: { nome: 'Sea', senha: 'password1', profissão: 'teacher', id: 1 }, usuário2: { name: 'suresh', senha: 'password2', profession: 'librarian', id: 2 }, usuário3: { nome: 'ramesh', senha: 'password3', profissão: 'clerk', id: 3 }, usuário4: { name: 'mohit', senha: 'password4', profissão: 'teacher', id: 4 } }
Neste código, criamos uma API RESTful :id(ID do usuário)usado para ler os detalhes do usuário específico, o código do arquivo server.js é mostrado a seguir:
var express = require('express'); var app = express(); var fs = require("fs"); app.get('/:id', function (req, res) { // Primeiro, lemos o usuário existente fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { data = JSON.parse( data ); var user = data["user" + req.params.id] console.log( user ); res.end( JSON.stringify(user)); }); } var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Exemplo de Aplicação, Endereço de Acesso http://%s:%s", host, port) }
Em seguida, execute os seguintes comandos:
$ node server.js Exemplo de Aplicação, Endereço de Acesso http://0.0.0.0:8081
Acesse no navegador http://127.0.0.1:8081/2Resultado conforme mostrado a seguir:
{ "name":"suresh", "password":"password2", "profissão":"bibliotecário", "id":2 }
Neste código, criamos uma API RESTful deleteUser, usado para deletar os detalhes do usuário especificado, no exemplo a seguir, o id do usuário é 2,o código do arquivo server.js é mostrado a seguir:
var express = require('express'); var app = express(); var fs = require("fs"); var id = 2; app.get('/deleteUser', function (req, res) { // Primeira leitura dos usuários existentes. fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { data = JSON.parse( data ); delete data["user" + id]; console.log( data ); res.end( JSON.stringify(data)); }); } var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Exemplo de Aplicação, Endereço de Acesso http://%s:%s", host, port) }
Em seguida, execute os seguintes comandos:
$ node server.js Exemplo de Aplicação, Endereço de Acesso http://0.0.0.0:8081
Acesse no navegador http://127.0.0.1:8081/deleteUser,o resultado é mostrado a seguir:
{ usuário1: { nome: 'Sea', senha: 'password1', profissão: 'teacher', id: 1 }, usuário3: { nome: 'ramesh', senha: 'password3', profissão: 'clerk', id: 3 } }