rodrigosantosbr

Flask API example

Sep 6th, 2019
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.75 KB | None | 0 0
  1. # -----------------------------------------------------------------------------------
  2. # models.py file - arquivo onde estão as tabelas do Banco de dados
  3. # -----------------------------------------------------------------------------------
  4.  
  5. from flask_mongoengine import MongoEngine
  6.  
  7. mongo = MongoEngine()
  8.  
  9. class BloodGroup(mongo.Document):
  10.     blood_group = mongo.StringField(
  11.         max_length=255, required=True, nullable=False, unique=True
  12.     )
  13.     is_deleted = mongo.BooleanField(
  14.         verbose_name='Excluído?',
  15.         default=False
  16.     )
  17.     created_at = mongo.DateTimeField(
  18.         verbose_name='Criação',
  19.         default=time_now_utc,
  20.         nullable=True
  21.     )
  22.     updated_at = mongo.DateTimeField(
  23.         verbose_name='Atualização',
  24.         default=time_now_utc,
  25.         onupdate=time_now_utc,
  26.         nullable=True
  27.     )
  28.  
  29. # -----------------------------------------------------------------------------------
  30. # api.py file - arquivo onde serão definidas as apis
  31. # -----------------------------------------------------------------------------------
  32.  
  33. from __future__ import unicode_literals
  34.  
  35. from flask import Blueprint
  36. from flask import json
  37. from flask import jsonify
  38.  
  39. from models import BloodGroup
  40.  
  41. class BaseBlueprint(Blueprint):
  42.     def route(self, rule, **options):
  43.         """Override the `route` method; add rules with and without slash."""
  44.         def decorator(f):
  45.             new_rule = rule.rstrip('/')
  46.             new_rule_with_slash = '{}/'.format(new_rule)
  47.             super(BaseBlueprint, self).route(new_rule, **options)(f)
  48.             super(BaseBlueprint, self).route(new_rule_with_slash, **options)(f)
  49.             return f
  50.         return decorator
  51.  
  52. blood_group_api_blueprint = BaseBlueprint('bloodgroup_api',
  53.                                           'api',
  54.                                           url_prefix='/api/v1/')
  55.  
  56. def api_blood_group_get_data(data):
  57.     _obj = {
  58.         'objectid': data.id,
  59.         'blood_group': data.blood_group,
  60.         'is_deleted': data.is_deleted,
  61.         'created_at': data.created_at,
  62.         'updated_at': data.updated_at
  63.     }
  64.     return _obj
  65.  
  66.  
  67. @blood_group_api_blueprint.route(
  68.     '/blood_group/get/all/', methods=['GET']
  69. )
  70. def api_blood_group_get_all_order_by_blood_group():
  71.     _results = []
  72.     _data_all = None
  73.  
  74.     try:
  75.         _data_all = BloodGroup.objects()
  76.     except Exception as e:
  77.         return jsonify({
  78.             "status": 0,
  79.             "result": "not found",
  80.             "code": "404",
  81.             "details": "resource could not be found"
  82.         }), 404
  83.  
  84.     try:
  85.         for _data in _data_all:
  86.             _obj = api_blood_group_get_data(_data)
  87.             _results.append(_obj)
  88.         _response = jsonify(_results)
  89.         return _response
  90.     except Exception as e:
  91.         pass
  92.  
  93.     return jsonify({
  94.             "status": 0,
  95.             "result": "bad request",
  96.             "code": "400",
  97.             "details": "request is not correctly formed"
  98.         }), 400
  99.  
  100.  
  101. # -----------------------------------------------------------------------------------
  102. # consumidor.py file - arquivo onde serão utilizadas as apis
  103. # -----------------------------------------------------------------------------------
  104.  
  105. import requests
  106.  
  107. # Making the http request
  108. resp = requests.get("http://127.0.0.1:5000/api/v1/blood_group/get/all/")
  109.  
  110. # 200
  111. print (resp.status_code)
  112.  
  113. # Transforming the data returned into JSON format
  114. data = resp.json()
  115.  
  116. for d in data:
  117.     print("id: {}".format(d['objectid']))
  118.     print("blood_group: {}".format(d['blood_group']))
  119.     print("blood_group_unaccent: {}".format(d['blood_group_unaccent']))
  120.     print("slug: {}".format(d['slug']))
  121.     print("is_deleted: {}".format(d['is_deleted']))
  122.     print("")
Advertisement
Add Comment
Please, Sign In to add comment