2018.2-NaturalSearch

Para propósitos de arquitetura microserviços utilizaremos um segundo repositório aqui: https://github.com/NaturalSearch/NaturalSearch_visualization

View project on GitHub

DjangoRestFramework API NaturalSearch.

Essa é a documentação da API do NaturalSearch. NaturalSearch é um sistema que reúne dados a respeito de propostas de projetos e proponentes culturais a serem incentivados pelo Ministério da Cultura MINC por meio da lei Rouanet. Nele é possivel realizar uma pesquisa sobre as informações dos projetos e proponentes e visualizar o resultado em forma de grafo e suas conexões. Você pode encontrar mais sobre o NaturalSearch em https://fga-eps-mds.github.io/2018.2-NaturalSearch/.

Considerando a necessidade de que precisamos possuir o acesso garantido aos dados públicos da API SALIC e com o problema de que seu serviço fica fora do ar com frequência, decidimos pela a criação dessa API utilizando o framework DjangoRest onde a função é recolher todos os dados públicos relevantes ao nosso produto disponíveis na API SALIC das classes projetos e proponentes, salvá-los em um banco independente onde podemos acessá-los e modificá-los de acordo com nossas necessidades não dependendo de terceiros.

  • API version: 1.0.0
  • Package version: 1.0.0
  • Host: http://68.183.107.229:8000 or 0.0.0.0:8000

Requerimentos.

Python 2.7 and 3.4+, Docker, docker-compose.

Instalação e Uso

1- Crie um fork ou clone o repositório.

git clone https://github.com/fga-eps-mds/2018.2-NaturalSearch.git

2- Caso queira alterar algo crie uma branch seguindo a política de branchs deste projeto.

3- Dentro da pasta que contém o Dockerfile execute o comando use (sudo se necessário):

docker-compose up --build

4- Após a execução e instalação de todos os pacotes necessários, se existirem pendências cancele a sessão e execute:

docker-compose run web bash

5- ATENÇÃO caso você queria baixar todos os dados de projetos e proponentes, no arquivo “views .py” comente a primeira e terceira url, descomente a segunda e quarta url e salve o arquivo. Esse processo se executado irá levar bastante tempo levando em consideração o grande volume de dados (4:30 hrs no nosso caso). Se deseja apenas testar a aplicação com um volume pequeno de dados pule este passo.

#Links para coleta de dados de proponentes e projetos da api
proponent_current_link = "http://api.salic.cultura.gov.br/v1/proponentes/?limit=100&offset=44200&format=json&"
#projects_current_link = "http://api.salic.cultura.gov.br/v1/projetos/?limit=100&format=json&"
projects_current_link ="http://api.salic.cultura.gov.br/v1/projetos/?limit=100&offset=92400&format=json&"
#proponent_current_link = "http://api.salic.cultura.gov.br/v1/proponentes/?limit=100&format=json"

6- Dentro do container execute:

root@cf461053cf90:/code# python manage.py makemigrations

7- Em seguida:

root@cf461053cf90:/code# python manage.py migrate

8- Crie o um usuário e senha para acessar o db.

root@cf461053cf90:/code# python manage.py createsuperuser

9- Em outra instância do terminal fora do container execute:

docker-compose up

10- O servidor estará ativo e poderá ser acessado na porta:

0.0.0.0:8000

Para acessar o db da API acesse essas portas e use o login e senha criados anteriormente:

0.0.0.0:8000/projeto

0.0.0.0:8000/proposta

Para acessar a documentação execute esse link:

0.0.0.0:8000/doc

Setuptools

Instalação via Setuptools.

python setup.py install --user

(ou sudo python setup.py install para instalar o pacote para todos os usuários)

Então importe o package:

import swagger_client

Getting Started

Por favor execute o procedimento de instalação :

Exemplo:

from __future__ import print_function
import time
import swagger_client
from swagger_client.rest import ApiException
from pprint import pprint
# create an instance of the API class
api_instance = swagger_client.ProjetosDadosRelativosAProjetosApi()
projeto_id = 'projeto_id_example' # str | id do projeto
format = 'format_example' # str | Formato de retorno (JSON ou curl)

try:
    # Busca projetos e todos seus atributos dado um id
    api_response = api_instance.projeto_list(projeto_id, format=format)
    pprint(api_response)
except ApiException as e:
    print("Exception when calling ProjetosDadosRelativosAProjetosApi->projeto_list: %s\n" % e)

Documentation for API Endpoints

All URIs are relative to http://68.183.107.229:8000 or 0.0.0.0:8000

Classe Métodos HTTP request Descrição
ProjetosDadosRelativosAProjetosApi projeto_list GET /projeto/{projeto_id} Busca projetos e todos seus atributos dado um id
ProponentesDadosRelativosAProponentesApi proponente_detail GET /proponente/{proponente_id} Busca proponentes dado um id fornecido


swaggerAPI

ver imagem em tamanho original


Documentação para as Models

Autorizações

Todos os endpoints não requerem autorização para consulta entretanto para adicionar, deletar ou modificar dados é necessário o login como administrador.

Autores

equipe.naturalsearch@gmail.com