├── app.py ├── app_restful.py ├── habilidades.py └── requirements.txt /app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, jsonify, request 2 | import json 3 | 4 | app = Flask(__name__) 5 | 6 | desenvolvedores = [ 7 | { 8 | 'id':'0', 9 | 'nome':'Rafael', 10 | 'habilidades':['Python', 'Flask'] 11 | }, 12 | { 13 | 'id':1, 14 | 'nome':'Galleani', 15 | 'habilidades':['Python', 'Django'] 16 | } 17 | ] 18 | 19 | # devolve um desenvolvedor pelo ID, também altera e deleta um desenvolvedor 20 | @app.route('/dev//', methods=['GET', 'PUT', 'DELETE']) 21 | def desenvolvedor(id): 22 | if request.method == 'GET': 23 | try: 24 | response = desenvolvedores[id] 25 | except IndexError: 26 | mensagem = 'Desenvolvedor de ID {} não existe'.format(id) 27 | response = {'status':'erro', 'mensagem':mensagem} 28 | except Exception: 29 | mensagem = 'Erro desconhecido. Procure o administrador da API' 30 | response = {'status':'erro', 'mensagem':mensagem} 31 | return jsonify(response) 32 | elif request.method == 'PUT': 33 | dados = json.loads(request.data) 34 | desenvolvedores[id] = dados 35 | return jsonify(dados) 36 | elif request.method == 'DELETE': 37 | desenvolvedores.pop(id) 38 | return jsonify({'status':'sucesso', 'mensagem':'Registro excluído'}) 39 | 40 | # Lista todos os desenvolvedor e permite registrar um novo desenvolvedor 41 | @app.route('/dev/', methods=['POST', 'GET']) 42 | def lista_desenvolvedores(): 43 | if request.method == 'POST': 44 | dados = json.loads(request.data) 45 | posicao = len(desenvolvedores) 46 | dados['id'] = posicao 47 | desenvolvedores.append(dados) 48 | return jsonify(desenvolvedores[posicao]) 49 | elif request.method == 'GET': 50 | return jsonify(desenvolvedores) 51 | 52 | if __name__ == '__main__': 53 | app.run(debug=True) -------------------------------------------------------------------------------- /app_restful.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request 2 | from flask_restful import Resource, Api 3 | from habilidades import Habilidades 4 | import json 5 | 6 | app = Flask(__name__) 7 | api = Api(app) 8 | 9 | desenvolvedores = [ 10 | { 11 | 'id':'0', 12 | 'nome':'Rafael', 13 | 'habilidades':['Python', 'Flask'] 14 | }, 15 | { 16 | 'id':1, 17 | 'nome':'Galleani', 18 | 'habilidades':['Python', 'Django'] 19 | } 20 | ] 21 | 22 | 23 | # devolve um desenvolvedor pelo ID, também altera e deleta um desenvolvedor 24 | class Desenvolvedor(Resource): 25 | def get(self, id): 26 | try: 27 | response = desenvolvedores[id] 28 | except IndexError: 29 | mensagem = 'Desenvolvedor de ID {} não existe'.format(id) 30 | response = {'status':'erro', 'mensagem':mensagem} 31 | except Exception: 32 | mensagem = 'Erro desconhecido. Procure o administrador da API' 33 | response = {'status':'erro', 'mensagem':mensagem} 34 | return response 35 | 36 | def put(self, id): 37 | dados = json.loads(request.data) 38 | desenvolvedores[id] = dados 39 | return dados 40 | 41 | def delete(self, id): 42 | desenvolvedores.pop(id) 43 | return {'status':'sucesso', 'mensagem':'Registro excluído'} 44 | 45 | # Lista todos os desenvolvedor e permite registrar um novo desenvolvedor 46 | class ListaDesenvolvedores(Resource): 47 | def get(self): 48 | return desenvolvedores 49 | 50 | def post(self): 51 | dados = json.loads(request.data) 52 | posicao = len(desenvolvedores) 53 | dados['id'] = posicao 54 | desenvolvedores.append(dados) 55 | return desenvolvedores[posicao] 56 | 57 | api.add_resource(Desenvolvedor, '/dev//') 58 | api.add_resource(ListaDesenvolvedores, '/dev/') 59 | api.add_resource(Habilidades, '/habilidades/') 60 | 61 | if __name__ == '__main__': 62 | app.run(debug=True) -------------------------------------------------------------------------------- /habilidades.py: -------------------------------------------------------------------------------- 1 | from flask_restful import Resource 2 | 3 | lista_habilidades = ['Python', 'Java', 'Flask', 'PHP'] 4 | class Habilidades(Resource): 5 | def get(self): 6 | return lista_habilidades -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Click==7.0 2 | Flask==1.0.2 3 | itsdangerous==1.1.0 4 | Jinja2==2.10 5 | MarkupSafe==1.1.0 6 | Werkzeug==0.14.1 7 | Flask-RESTful==0.3.7 --------------------------------------------------------------------------------