VUTTR API

Este repositório contém uma simples API para o desafio de front-end do BossaBox. Requisitos:

  • NodeJS v5.2.0+

Como executar

Faça o clone/download deste repositório, execute npm install e npx json-server db.json. A API fica localizada em http://localhost:3000.

Rotas

Todas as requisições de POST para esta API devem conter o header Content-Type: application/json. Esta API contém as seguintes rotas:

  • GET /tools : lista as ferramentas cadastradas
  • POST /tools : cria uma nova ferramenta
  • DELETE /tools/:id : apaga a ferramenta com ID :id

Para filtrar as ferramentas em GET /tools, é possível:

  • fazer uma busca global utilizando a query string ?q=:busca;
  • fazer uma busca por tags individuais utilizando a query string ?tags_like=:busca.

Exemplos

GET /tools

Requisição:

GET /tools

Resposta:

[
    {
        id: 1,
        title: "Notion",
        link: "https://notion.so",
        description: "All in one tool to organize teams and ideas. Write, plan, collaborate, and get organized. ",
        tags: [
            "organization",
            "planning",
            "collaboration",
            "writing",
            "calendar"
        ]
    },
    {
        id: 2,
        title: "json-server",
        link: "https://github.com/typicode/json-server",
        description: "Fake REST API based on a json schema. Useful for mocking and creating APIs for front-end devs to consume in coding challenges.",
        tags: [
            "api",
            "json",
            "schema",
            "node",
            "github",
            "rest"
        ]
    },
    {
        id: 3,
        title: "fastify",
        link: "https://www.fastify.io/",
        description: "Extremely fast and simple, low-overhead web framework for NodeJS. Supports HTTP2.",
        tags: [
            "web",
            "framework",
            "node",
            "http2",
            "https",
            "localhost"
        ]
    }
]

GET /tools?q=:busca

Requisição:

GET /tools?q=notion

Resposta:

[
    {
        id: 1,
        title: "Notion",
        link: "https://notion.so",
        description: "All in one tool to organize teams and ideas. Write, plan, collaborate, and get organized. ",
        tags: [
            "organization",
            "planning",
            "collaboration",
            "writing",
            "calendar"
        ]
    }
]

GET /tools?tags_like=:busca

Requisição:

GET /tools?tags_like=node

Resposta:

[
    {
        id: 2,
        title: "json-server",
        link: "https://github.com/typicode/json-server",
        description: "Fake REST API based on a json schema. Useful for mocking and creating APIs for front-end devs to consume in coding challenges.",
        tags: [
            "api",
            "json",
            "schema",
            "node",
            "github",
            "rest"
        ]
    },
    {
        id: 3,
        title: "fastify",
        link: "https://www.fastify.io/",
        description: "Extremely fast and simple, low-overhead web framework for NodeJS. Supports HTTP2.",
        tags: [
            "web",
            "framework",
            "node",
            "http2",
            "https",
            "localhost"
        ]
    }
]

POST /tools

Requisição:

// POST /tools
// Content-Type: application/json
{
    "title": "hotel",
    "link": "https://github.com/typicode/hotel",
    "description": "Local app manager. Start apps within your browser, developer tool with local .localhost domain and https out of the box.",
    "tags":["node", "organizing", "webapps", "domain", "developer", "https", "proxy"]
}

Resposta:

{
    "title": "hotel",
    "link": "https://github.com/typicode/hotel",
    "description": "Local app manager. Start apps within your browser, developer tool with local .localhost domain and https out of the box.",
    "tags":["node", "organizing", "webapps", "domain", "developer", "https", "proxy"],
    "id":5
}

DELETE /tools/:id

Requisição:

DELETE /tools/5

Resposta:

// Status: 200 OK
{}