Criando uma API com Spring Boot e Kotlin — parte 3

ronaldocoding

Ronaldo Costa de Freitas

Posted on November 12, 2022

Criando uma API com Spring Boot e Kotlin — parte 3

O post de hoje vai ser bem curto, vamos apenas desenvolver os métodos PUT (atualizar) e DELETE (deletar) da nossa API. Lembrando que estamos desenvolvendo um CRUD de um setup de PC. Um setup nada mais é do que um conjunto de peças necessárias para montar um computador de mesa: placa-mãe, placa de vídeo, processador, memória ram, etc.

Função updateSetup

Muito bem, vamos lá, para atualizarmos um setup específico do nosso banco de dados precisamos receber seu id e o próprio objeto setup com os dados atualizados, após isso é necessário verificar se um setup com esse id realmente existe, caso exista, nós o atualizamos, caso não, vamos retornar um objeto de setup vazio. Segue o código:

@PutMapping("{id}")
fun updateSetup(@PathVariable id: Long, @RequestBody setup: Setup): Setup {
  if(repository.existsById(id)) {
      return repository.save(setup)
  }
  return Setup()
}
Enter fullscreen mode Exit fullscreen mode

Bem simples, não? Primeiro usamos a notação @PutMapping para indicar que a função irá mapear o método HTPP PUT, depois informamos que uma propriedade id será necessária no caminho da url.

Procedendo para o desenvolvimento da função em si, seus parâmetros são: um id, que será usado no caminho da url, como já dito, e um objeto setup, que será passado no body (corpo) da requisição.

Então nós verificamos se um setup com o id informado realmente existe com a função existsById(), se existir, nós salvamos o setup atualizado e caso não exista, nós retornamos um objeto de setup vazio.

Para retornar esse objeto vazio, precisamos fazer algumas alterações nas nossas classes models. É preciso que as propriedades delas tenham valores-padrão, a classe Part ficará dessa forma:

package br.com.pchunter.model

import br.com.pchunter.util.emptyString
import br.com.pchunter.util.zeroFloatNumber
import br.com.pchunter.util.zeroLongNumber
import com.fasterxml.jackson.annotation.JsonProperty
import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.Id

@Entity
data class Part(
    @Id
    @GeneratedValue
    @JsonProperty(value = "id", access = JsonProperty.Access.READ_ONLY)
    val id: Long = zeroLongNumber(),
    val title: String = emptyString(),
    val description: String = emptyString(),
    val url: String = emptyString(),
    val value: Float = zeroFloatNumber()
)
Enter fullscreen mode Exit fullscreen mode

Aqui nós definimos que os valores-padrão serão números zero e string vazias por meio das funções zeroLongNumber(), emptyString() e zeroFloatNumber:

package br.com.pchunter.util

fun emptyString() = ""

fun zeroLongNumber() = 0L

fun zeroFloatNumber() = 0.0f
Enter fullscreen mode Exit fullscreen mode

Quanto a classe Setup, vamos definir os valores-padrão das suas propriedades como objetos de Part vazios e listas de Part também vazias:

package br.com.pchunter.model

import br.com.pchunter.util.zeroLongNumber
import com.fasterxml.jackson.annotation.JsonProperty
import javax.persistence.*

@Entity
data class Setup(
    @Id
    @GeneratedValue
    @JsonProperty(value = "id", access = JsonProperty.Access.READ_ONLY)
    val id: Long = zeroLongNumber(),
    @OneToOne(cascade = [CascadeType.PERSIST])
    val cpu: Part = Part(),
    @OneToOne(cascade = [CascadeType.PERSIST])
    val motherboard: Part = Part(),
    @OneToMany(cascade = [CascadeType.PERSIST])
    val gpus: List<Part> = listOf(Part()),
    @OneToMany(cascade = [CascadeType.PERSIST])
    val hds: List<Part> = listOf(Part()),
    @OneToMany(cascade = [CascadeType.PERSIST])
    val ssds: List<Part> = listOf(Part()),
    @OneToMany(cascade = [CascadeType.PERSIST])
    val rams: List<Part> = listOf(Part()),
    @OneToMany(cascade = [CascadeType.PERSIST])
    val fans: List<Part> = listOf(Part()),
    @OneToOne(cascade = [CascadeType.PERSIST])
    val powerSupply: Part = Part(),
    @OneToOne(cascade = [CascadeType.PERSIST])
    val cabinet: Part = Part(),
    @OneToMany(cascade = [CascadeType.PERSIST])
    val monitors: List<Part> = listOf(Part()),
    @OneToOne(cascade = [CascadeType.PERSIST])
    val keyboard: Part = Part(),
    @OneToOne(cascade = [CascadeType.PERSIST])
    val mouse: Part = Part()
) {
    val totalValue: Float
        get() {
            var acm = 0.0f
            acm += cpu.value +
                    motherboard.value +
                    powerSupply.value +
                    cabinet.value +
                    keyboard.value +
                    mouse.value
            gpus.forEach { gpu ->
                acm += gpu.value
            }
            hds.forEach { hd ->
                acm += hd.value
            }
            ssds.forEach { ssd ->
                acm += ssd.value
            }
            rams.forEach { ram ->
                acm += ram.value
            }
            fans.forEach { fan ->
                acm += fan.value
            }
            monitors.forEach { monitor ->
                acm += monitor.value
            }
            return acm
        }
}
Enter fullscreen mode Exit fullscreen mode

Pronto, agora vamos testar essa função. Usando o Postman, faremos uma requisição GET para observarmos como estão os setups atuais:

[
    {
        "id": 474,
        "cpu": {
            "id": 476,
            "title": "Processador AMD Ryzen 5 5600X",
            "description": "Processador AMD Ryzen 5 5600X, 3.7GHz (4.6GHz Max Turbo), Cache 35MB, 6 Núcleos, 12 Threads, AM4 - 100-100000065BOX",
            "url": "https://www.kabum.com.br/produto/129451/processador-amd-ryzen-5-5600x-3-7ghz-4-6ghz-max-turbo-cache-35mb-6-nucleos-12-threads-am4-100-100000065box",
            "value": 1199.99
        },
        "motherboard": {
            "id": 478,
            "title": "Placa-Mãe Gigabyte B550M",
            "description": "Placa-Mãe Gigabyte B550M Aorus Elite, AMD AM4, Micro ATX, DDR4",
            "url": "https://www.kabum.com.br/produto/114781/placa-mae-gigabyte-b550m-aorus-elite-amd-am4-micro-atx-ddr4",
            "value": 849.99
        },
        "gpus": [
            {
                "id": 482,
                "title": "GTX 1660 Super",
                "description": "Placa de Vídeo GTX 1660 Super Twin Fan Zotac Gaming NVIDIA GeForce, 6GB, GDDR6 - ZT-T16620F-10L",
                "url": "https://www.kabum.com.br/produto/110396/placa-de-video-gtx-1660-super-twin-fan-zotac-gaming-nvidia-geforce-6gb-gddr6-zt-t16620f-10l",
                "value": 1299.99
            }
        ],
        "hds": [
            {
                "id": 483,
                "title": "HD Seagate 2TB",
                "description": "HD Seagate 2TB BarraCuda, 3.5', SATA - ST2000DM008",
                "url": "https://www.kabum.com.br/produto/100916/hd-seagate-2tb-barracuda-3-5-sata-st2000dm008",
                "value": 299.99
            }
        ],
        "ssds": [
            {
                "id": 487,
                "title": "SSD 512 GB",
                "description": "SSD 512 GB XPG S41 TUF, M.2 PCIe, Leitura: 3500MB/s e Gravação: 2400MB/s - AGAMMIXS41-512G-C",
                "url": "https://www.kabum.com.br/produto/127700/ssd-512-gb-xpg-s41-tuf-m-2-pcie-leitura-3500mb-s-e-gravacao-2400mb-s-agammixs41-512g-c",
                "value": 409.99
            }
        ],
        "rams": [
            {
                "id": 485,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            },
            {
                "id": 486,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            }
        ],
        "fans": [
            {
                "id": 481,
                "title": "Cooler Fan Rise Mode Energy",
                "description": "Cooler Fan Rise Mode Energy, 3 Unidades, 120mm, ARGB, Preto - FN-02-RGB-5V",
                "url": "https://www.kabum.com.br/produto/153647/cooler-fan-rise-mode-energy-3-unidades-120mm-argb-preto-fn-02-rgb-5v",
                "value": 129.99
            }
        ],
        "powerSupply": {
            "id": 480,
            "title": "Fonte Corsair CV550",
            "description": "Fonte Corsair CV550, 550W, 80 Plus Bronze - CP-9020210-BR",
            "url": "https://www.kabum.com.br/produto/108257/fonte-corsair-cv550-550w-80-plus-bronze-cp-9020210-br",
            "value": 359.99
        },
        "cabinet": {
            "id": 475,
            "title": "Gabinete Gamer Corsair Carbide Series Spec Delta",
            "description": "Gabinete Gamer Corsair Carbide Series Spec Delta, Mid-Tower, RGB, Lateral em Vidro Temperado, Preto, CC-9011166-WW",
            "url": "https://www.kabum.com.br/produto/100004/gabinete-gamer-corsair-carbide-series-spec-delta-mid-tower-rgb-lateral-em-vidro-temperado-preto-cc-9011166-ww",
            "value": 399.99
        },
        "monitors": [
            {
                "id": 484,
                "title": "Monitor Gamer LG Ultra Gear 27 Full HD",
                "description": "Monitor Gamer LG Ultra Gear 27 Full HD, 144 Hz, 1ms, IPS, HDMI e DisplayPort, sRGB 99%, HDR10, FreeSync, VESA, Altura Ajustável - 27GL650F-B",
                "url": "https://www.kabum.com.br/produto/380514/monitor-gamer-lg-ultra-gear-27-full-hd-144-hz-1ms-ips-hdmi-e-displayport-srgb-99-hdr10-freesync-vesa-altura-ajustavel-27gl650f-b",
                "value": 1559.99
            }
        ],
        "keyboard": {
            "id": 477,
            "title": "Teclado Mecânico Gamer HyperX Alloy Origins Core",
            "description": "Teclado Mecânico Gamer HyperX Alloy Origins Core, RGB, Switch HyperX Red, ABNT2 - HX-KB7RDX-BR",
            "url": "https://www.kabum.com.br/produto/105009/teclado-mecanico-gamer-hyperx-alloy-origins-core-rgb-switch-hyperx-red-abnt2-hx-kb7rdx-br",
            "value": 419.99
        },
        "mouse": {
            "id": 479,
            "title": "Mouse Gamer HyperX Pulsefire Surge",
            "description": "Mouse Gamer HyperX Pulsefire Surge RGB 16000 DPI - HX-MC002B",
            "url": "https://www.kabum.com.br/produto/95566/mouse-gamer-hyperx-pulsefire-surge-rgb-16000-dpi-hx-mc002b",
            "value": 169.89
        },
        "totalValue": 7879.911
    },
    {
        "id": 488,
        "cpu": {
            "id": 490,
            "title": "Processador AMD Ryzen 5 5600X",
            "description": "Processador AMD Ryzen 5 5600X, 3.7GHz (4.6GHz Max Turbo), Cache 35MB, 6 Núcleos, 12 Threads, AM4 - 100-100000065BOX",
            "url": "https://www.kabum.com.br/produto/129451/processador-amd-ryzen-5-5600x-3-7ghz-4-6ghz-max-turbo-cache-35mb-6-nucleos-12-threads-am4-100-100000065box",
            "value": 1199.99
        },
        "motherboard": {
            "id": 492,
            "title": "Placa-Mãe Gigabyte B550M",
            "description": "Placa-Mãe Gigabyte B550M Aorus Elite, AMD AM4, Micro ATX, DDR4",
            "url": "https://www.kabum.com.br/produto/114781/placa-mae-gigabyte-b550m-aorus-elite-amd-am4-micro-atx-ddr4",
            "value": 849.99
        },
        "gpus": [
            {
                "id": 496,
                "title": "GTX 1660 Super",
                "description": "Placa de Vídeo GTX 1660 Super Twin Fan Zotac Gaming NVIDIA GeForce, 6GB, GDDR6 - ZT-T16620F-10L",
                "url": "https://www.kabum.com.br/produto/110396/placa-de-video-gtx-1660-super-twin-fan-zotac-gaming-nvidia-geforce-6gb-gddr6-zt-t16620f-10l",
                "value": 1299.99
            }
        ],
        "hds": [
            {
                "id": 497,
                "title": "HD Seagate 2TB",
                "description": "HD Seagate 2TB BarraCuda, 3.5', SATA - ST2000DM008",
                "url": "https://www.kabum.com.br/produto/100916/hd-seagate-2tb-barracuda-3-5-sata-st2000dm008",
                "value": 299.99
            }
        ],
        "ssds": [
            {
                "id": 501,
                "title": "SSD 512 GB",
                "description": "SSD 512 GB XPG S41 TUF, M.2 PCIe, Leitura: 3500MB/s e Gravação: 2400MB/s - AGAMMIXS41-512G-C",
                "url": "https://www.kabum.com.br/produto/127700/ssd-512-gb-xpg-s41-tuf-m-2-pcie-leitura-3500mb-s-e-gravacao-2400mb-s-agammixs41-512g-c",
                "value": 409.99
            }
        ],
        "rams": [
            {
                "id": 499,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            },
            {
                "id": 500,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            }
        ],
        "fans": [
            {
                "id": 495,
                "title": "Cooler Fan Rise Mode Energy",
                "description": "Cooler Fan Rise Mode Energy, 3 Unidades, 120mm, ARGB, Preto - FN-02-RGB-5V",
                "url": "https://www.kabum.com.br/produto/153647/cooler-fan-rise-mode-energy-3-unidades-120mm-argb-preto-fn-02-rgb-5v",
                "value": 129.99
            }
        ],
        "powerSupply": {
            "id": 494,
            "title": "Fonte Corsair CV550",
            "description": "Fonte Corsair CV550, 550W, 80 Plus Bronze - CP-9020210-BR",
            "url": "https://www.kabum.com.br/produto/108257/fonte-corsair-cv550-550w-80-plus-bronze-cp-9020210-br",
            "value": 359.99
        },
        "cabinet": {
            "id": 489,
            "title": "Gabinete Gamer Corsair Carbide Series Spec Delta",
            "description": "Gabinete Gamer Corsair Carbide Series Spec Delta, Mid-Tower, RGB, Lateral em Vidro Temperado, Preto, CC-9011166-WW",
            "url": "https://www.kabum.com.br/produto/100004/gabinete-gamer-corsair-carbide-series-spec-delta-mid-tower-rgb-lateral-em-vidro-temperado-preto-cc-9011166-ww",
            "value": 399.99
        },
        "monitors": [
            {
                "id": 498,
                "title": "Monitor Gamer LG UltraGear 32 LED",
                "description": "Monitor Gamer LG UltraGear 32 LED, 165 Hz, QHD, 1ms, HDMI/DisplayPort, 95% sRGB, FreeSync Premium, HDR 10, VESA, Preto - 32GN600-B",
                "url": "https://www.kabum.com.br/produto/364835/monitor-gamer-lg-ultragear-32-led-165-hz-qhd-1ms-hdmi-displayport-95-srgb-freesync-premium-hdr-10-vesa-preto-32gn600-b",
                "value": 1899.99
            }
        ],
        "keyboard": {
            "id": 491,
            "title": "Teclado Mecânico Gamer HyperX Alloy Origins Core",
            "description": "Teclado Mecânico Gamer HyperX Alloy Origins Core, RGB, Switch HyperX Red, ABNT2 - HX-KB7RDX-BR",
            "url": "https://www.kabum.com.br/produto/105009/teclado-mecanico-gamer-hyperx-alloy-origins-core-rgb-switch-hyperx-red-abnt2-hx-kb7rdx-br",
            "value": 419.99
        },
        "mouse": {
            "id": 493,
            "title": "Mouse Gamer HyperX Pulsefire Surge",
            "description": "Mouse Gamer HyperX Pulsefire Surge RGB 16000 DPI - HX-MC002B",
            "url": "https://www.kabum.com.br/produto/95566/mouse-gamer-hyperx-pulsefire-surge-rgb-16000-dpi-hx-mc002b",
            "value": 169.89
        },
        "totalValue": 8219.911
    }
]
Enter fullscreen mode Exit fullscreen mode

Podemos observar que existem dois setups, vamos escolher o primeiro para modificar, seu id é 474. Esse será o novo setup passado no corpo da requisição PUT:

{
  "cpu": {
    "title": "Processador AMD Ryzen 7 5800X",
    "description": "Processador AMD Ryzen 7 5800X, 3.8GHz (4.7GHz Max Turbo), Cache 36MB, Octa Core, 16 Threads, AM4 - 100-100000063WOF",
    "url": "https://www.kabum.com.br/produto/129459/processador-amd-ryzen-7-5800x-3-8ghz-4-7ghz-max-turbo-cache-36mb-octa-core-16-threads-am4-100-100000063wof",
    "value": 1899.99
  },
  "motherboard": {
    "title": "Placa Mãe B650M-A MSI PRO Wi-Fi",
    "description": "Placa Mãe B650M-A MSI PRO Wi-Fi, AMD AM5, mATX, DDR5 - PRO B650M-A WIFI",
    "url": "https://www.kabum.com.br/produto/392613/placa-mae-b650m-a-msi-pro-wi-fi-amd-am5-matx-ddr5-pro-b650m-a-wifi",
    "value": 1999.99
  },
  "gpus": [
    {
      "title": "GTX 1660 Super",
      "description": "Placa de Vídeo GTX 1660 Super Twin Fan Zotac Gaming NVIDIA GeForce, 6GB, GDDR6 - ZT-T16620F-10L",
      "url": "https://www.kabum.com.br/produto/110396/placa-de-video-gtx-1660-super-twin-fan-zotac-gaming-nvidia-geforce-6gb-gddr6-zt-t16620f-10l",
      "value": 1299.99
    }
  ],
  "hds": [
    {
      "title": "HD Seagate 2TB",
      "description": "HD Seagate 2TB BarraCuda, 3.5', SATA - ST2000DM008",
      "url": "https://www.kabum.com.br/produto/100916/hd-seagate-2tb-barracuda-3-5-sata-st2000dm008",
      "value": 299.99
    }
  ],
  "ssds": [
    {
      "title": "SSD 512 GB",
      "description": "SSD 512 GB XPG S41 TUF, M.2 PCIe, Leitura: 3500MB/s e Gravação: 2400MB/s - AGAMMIXS41-512G-C",
      "url": "https://www.kabum.com.br/produto/127700/ssd-512-gb-xpg-s41-tuf-m-2-pcie-leitura-3500mb-s-e-gravacao-2400mb-s-agammixs41-512g-c",
      "value": 409.99
    }
  ],
  "rams": [
    {
      "title": "Memoria, Ram 8, Gb",
      "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
      "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
      "value": 390.06
    },
    {
      "title": "Memoria, Ram 8, Gb",
      "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
      "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
      "value": 390.06
    }
  ],
  "fans": [
    {
      "title": "Cooler Fan Rise Mode Energy",
      "description": "Cooler Fan Rise Mode Energy, 3 Unidades, 120mm, ARGB, Preto - FN-02-RGB-5V",
      "url": "https://www.kabum.com.br/produto/153647/cooler-fan-rise-mode-energy-3-unidades-120mm-argb-preto-fn-02-rgb-5v",
      "value": 129.99
    }
  ],
  "powerSupply": {
    "title": "Fonte Corsair CV550",
    "description": "Fonte Corsair CV550, 550W, 80 Plus Bronze - CP-9020210-BR",
    "url": "https://www.kabum.com.br/produto/108257/fonte-corsair-cv550-550w-80-plus-bronze-cp-9020210-br",
    "value": 359.99
  },
  "cabinet": {
    "title": "Gabinete Gamer Corsair Carbide Series Spec Delta",
    "description": "Gabinete Gamer Corsair Carbide Series Spec Delta, Mid-Tower, RGB, Lateral em Vidro Temperado, Preto, CC-9011166-WW",
    "url": "https://www.kabum.com.br/produto/100004/gabinete-gamer-corsair-carbide-series-spec-delta-mid-tower-rgb-lateral-em-vidro-temperado-preto-cc-9011166-ww",
    "value": 399.99
  },
  "monitors": [
    {
      "title": "Monitor Gamer LG UltraGear 32 LED",
      "description": "Monitor Gamer LG UltraGear 32 LED, 165 Hz, QHD, 1ms, HDMI/DisplayPort, 95% sRGB, FreeSync Premium, HDR 10, VESA, Preto - 32GN600-B",
      "url": "https://www.kabum.com.br/produto/364835/monitor-gamer-lg-ultragear-32-led-165-hz-qhd-1ms-hdmi-displayport-95-srgb-freesync-premium-hdr-10-vesa-preto-32gn600-b",
      "value": 1899.99
    }
  ],
  "keyboard": {
    "title": "Teclado Mecânico Gamer HyperX Alloy Origins Core",
    "description": "Teclado Mecânico Gamer HyperX Alloy Origins Core, RGB, Switch HyperX Red, ABNT2 - HX-KB7RDX-BR",
    "url": "https://www.kabum.com.br/produto/105009/teclado-mecanico-gamer-hyperx-alloy-origins-core-rgb-switch-hyperx-red-abnt2-hx-kb7rdx-br",
    "value": 419.99
  },
  "mouse": {
    "title": "Mouse Gamer HyperX Pulsefire Surge",
    "description": "Mouse Gamer HyperX Pulsefire Surge RGB 16000 DPI - HX-MC002B",
    "url": "https://www.kabum.com.br/produto/95566/mouse-gamer-hyperx-pulsefire-surge-rgb-16000-dpi-hx-mc002b",
    "value": 169.89
  }
}
Enter fullscreen mode Exit fullscreen mode

Apenas atualizamos alguns dados da cpu e da motherboard. Ao fazer a requisição, recebemos o seguinte resultado:

{
    "id": 502,
    "cpu": {
        "id": 504,
        "title": "Processador AMD Ryzen 7 5800X",
        "description": "Processador AMD Ryzen 7 5800X, 3.8GHz (4.7GHz Max Turbo), Cache 36MB, Octa Core, 16 Threads, AM4 - 100-100000063WOF",
        "url": "https://www.kabum.com.br/produto/129459/processador-amd-ryzen-7-5800x-3-8ghz-4-7ghz-max-turbo-cache-36mb-octa-core-16-threads-am4-100-100000063wof",
        "value": 1899.99
    },
    "motherboard": {
        "id": 506,
        "title": "Placa Mãe B650M-A MSI PRO Wi-Fi",
        "description": "Placa Mãe B650M-A MSI PRO Wi-Fi, AMD AM5, mATX, DDR5 - PRO B650M-A WIFI",
        "url": "https://www.kabum.com.br/produto/392613/placa-mae-b650m-a-msi-pro-wi-fi-amd-am5-matx-ddr5-pro-b650m-a-wifi",
        "value": 1999.99
    },
    "gpus": [
        {
            "id": 510,
            "title": "GTX 1660 Super",
            "description": "Placa de Vídeo GTX 1660 Super Twin Fan Zotac Gaming NVIDIA GeForce, 6GB, GDDR6 - ZT-T16620F-10L",
            "url": "https://www.kabum.com.br/produto/110396/placa-de-video-gtx-1660-super-twin-fan-zotac-gaming-nvidia-geforce-6gb-gddr6-zt-t16620f-10l",
            "value": 1299.99
        }
    ],
    "hds": [
        {
            "id": 511,
            "title": "HD Seagate 2TB",
            "description": "HD Seagate 2TB BarraCuda, 3.5', SATA - ST2000DM008",
            "url": "https://www.kabum.com.br/produto/100916/hd-seagate-2tb-barracuda-3-5-sata-st2000dm008",
            "value": 299.99
        }
    ],
    "ssds": [
        {
            "id": 515,
            "title": "SSD 512 GB",
            "description": "SSD 512 GB XPG S41 TUF, M.2 PCIe, Leitura: 3500MB/s e Gravação: 2400MB/s - AGAMMIXS41-512G-C",
            "url": "https://www.kabum.com.br/produto/127700/ssd-512-gb-xpg-s41-tuf-m-2-pcie-leitura-3500mb-s-e-gravacao-2400mb-s-agammixs41-512g-c",
            "value": 409.99
        }
    ],
    "rams": [
        {
            "id": 513,
            "title": "Memoria, Ram 8, Gb",
            "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
            "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
            "value": 390.06
        },
        {
            "id": 514,
            "title": "Memoria, Ram 8, Gb",
            "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
            "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
            "value": 390.06
        }
    ],
    "fans": [
        {
            "id": 509,
            "title": "Cooler Fan Rise Mode Energy",
            "description": "Cooler Fan Rise Mode Energy, 3 Unidades, 120mm, ARGB, Preto - FN-02-RGB-5V",
            "url": "https://www.kabum.com.br/produto/153647/cooler-fan-rise-mode-energy-3-unidades-120mm-argb-preto-fn-02-rgb-5v",
            "value": 129.99
        }
    ],
    "powerSupply": {
        "id": 508,
        "title": "Fonte Corsair CV550",
        "description": "Fonte Corsair CV550, 550W, 80 Plus Bronze - CP-9020210-BR",
        "url": "https://www.kabum.com.br/produto/108257/fonte-corsair-cv550-550w-80-plus-bronze-cp-9020210-br",
        "value": 359.99
    },
    "cabinet": {
        "id": 503,
        "title": "Gabinete Gamer Corsair Carbide Series Spec Delta",
        "description": "Gabinete Gamer Corsair Carbide Series Spec Delta, Mid-Tower, RGB, Lateral em Vidro Temperado, Preto, CC-9011166-WW",
        "url": "https://www.kabum.com.br/produto/100004/gabinete-gamer-corsair-carbide-series-spec-delta-mid-tower-rgb-lateral-em-vidro-temperado-preto-cc-9011166-ww",
        "value": 399.99
    },
    "monitors": [
        {
            "id": 512,
            "title": "Monitor Gamer LG UltraGear 32 LED",
            "description": "Monitor Gamer LG UltraGear 32 LED, 165 Hz, QHD, 1ms, HDMI/DisplayPort, 95% sRGB, FreeSync Premium, HDR 10, VESA, Preto - 32GN600-B",
            "url": "https://www.kabum.com.br/produto/364835/monitor-gamer-lg-ultragear-32-led-165-hz-qhd-1ms-hdmi-displayport-95-srgb-freesync-premium-hdr-10-vesa-preto-32gn600-b",
            "value": 1899.99
        }
    ],
    "keyboard": {
        "id": 505,
        "title": "Teclado Mecânico Gamer HyperX Alloy Origins Core",
        "description": "Teclado Mecânico Gamer HyperX Alloy Origins Core, RGB, Switch HyperX Red, ABNT2 - HX-KB7RDX-BR",
        "url": "https://www.kabum.com.br/produto/105009/teclado-mecanico-gamer-hyperx-alloy-origins-core-rgb-switch-hyperx-red-abnt2-hx-kb7rdx-br",
        "value": 419.99
    },
    "mouse": {
        "id": 507,
        "title": "Mouse Gamer HyperX Pulsefire Surge",
        "description": "Mouse Gamer HyperX Pulsefire Surge RGB 16000 DPI - HX-MC002B",
        "url": "https://www.kabum.com.br/produto/95566/mouse-gamer-hyperx-pulsefire-surge-rgb-16000-dpi-hx-mc002b",
        "value": 169.89
    },
    "totalValue": 10069.911
}
Enter fullscreen mode Exit fullscreen mode

O setup foi atualizado, mas repare que os ids também foram, o que não deveria acontecer, já que ele deveria ser um identificador imutável, apenas de leitura. Isso é uma falha de segurança que trataremos no próximo post. Nosso método PUT está pronto por enquanto.

Função deleteSetup e deleteAllSetups

Nossa função para deletar um setup será tão simples quanto a de atualizar:

@DeleteMapping("{id}")
fun deleteSetup(@PathVariable id: Long) {
    if (repository.existsById(id)) {
        repository.deleteById(id)
    }
}
Enter fullscreen mode Exit fullscreen mode

Aqui também utilizamos uma notação chamada @DeleteMapping, que indica que a função irá mapear um método HTTP DELETE. Além disso, a função recebe um id como parâmetro que irá ficar no caminho da url. A lógica é bem simples: primeiro verificamos se existe um setup com esse id, caso exista, nós o deletamos.

Adicionalmente, vamos fazer uma função para deletar todos os setups:

@DeleteMapping()
fun deleteAllSetups() {
    repository.deleteAll()
}
Enter fullscreen mode Exit fullscreen mode

Bem simples, apenas utilizamos a função deleteAll() do repository.

Agora vamos testar as funções. Primeiro vamos usar GET para vermos quais setups estão salvos no banco de dados:

[
    {
        "id": 474,
        "cpu": {
            "id": 476,
            "title": "Processador AMD Ryzen 5 5600X",
            "description": "Processador AMD Ryzen 5 5600X, 3.7GHz (4.6GHz Max Turbo), Cache 35MB, 6 Núcleos, 12 Threads, AM4 - 100-100000065BOX",
            "url": "https://www.kabum.com.br/produto/129451/processador-amd-ryzen-5-5600x-3-7ghz-4-6ghz-max-turbo-cache-35mb-6-nucleos-12-threads-am4-100-100000065box",
            "value": 1199.99
        },
        "motherboard": {
            "id": 478,
            "title": "Placa-Mãe Gigabyte B550M",
            "description": "Placa-Mãe Gigabyte B550M Aorus Elite, AMD AM4, Micro ATX, DDR4",
            "url": "https://www.kabum.com.br/produto/114781/placa-mae-gigabyte-b550m-aorus-elite-amd-am4-micro-atx-ddr4",
            "value": 849.99
        },
        "gpus": [
            {
                "id": 482,
                "title": "GTX 1660 Super",
                "description": "Placa de Vídeo GTX 1660 Super Twin Fan Zotac Gaming NVIDIA GeForce, 6GB, GDDR6 - ZT-T16620F-10L",
                "url": "https://www.kabum.com.br/produto/110396/placa-de-video-gtx-1660-super-twin-fan-zotac-gaming-nvidia-geforce-6gb-gddr6-zt-t16620f-10l",
                "value": 1299.99
            }
        ],
        "hds": [
            {
                "id": 483,
                "title": "HD Seagate 2TB",
                "description": "HD Seagate 2TB BarraCuda, 3.5', SATA - ST2000DM008",
                "url": "https://www.kabum.com.br/produto/100916/hd-seagate-2tb-barracuda-3-5-sata-st2000dm008",
                "value": 299.99
            }
        ],
        "ssds": [
            {
                "id": 487,
                "title": "SSD 512 GB",
                "description": "SSD 512 GB XPG S41 TUF, M.2 PCIe, Leitura: 3500MB/s e Gravação: 2400MB/s - AGAMMIXS41-512G-C",
                "url": "https://www.kabum.com.br/produto/127700/ssd-512-gb-xpg-s41-tuf-m-2-pcie-leitura-3500mb-s-e-gravacao-2400mb-s-agammixs41-512g-c",
                "value": 409.99
            }
        ],
        "rams": [
            {
                "id": 485,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            },
            {
                "id": 486,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            }
        ],
        "fans": [
            {
                "id": 481,
                "title": "Cooler Fan Rise Mode Energy",
                "description": "Cooler Fan Rise Mode Energy, 3 Unidades, 120mm, ARGB, Preto - FN-02-RGB-5V",
                "url": "https://www.kabum.com.br/produto/153647/cooler-fan-rise-mode-energy-3-unidades-120mm-argb-preto-fn-02-rgb-5v",
                "value": 129.99
            }
        ],
        "powerSupply": {
            "id": 480,
            "title": "Fonte Corsair CV550",
            "description": "Fonte Corsair CV550, 550W, 80 Plus Bronze - CP-9020210-BR",
            "url": "https://www.kabum.com.br/produto/108257/fonte-corsair-cv550-550w-80-plus-bronze-cp-9020210-br",
            "value": 359.99
        },
        "cabinet": {
            "id": 475,
            "title": "Gabinete Gamer Corsair Carbide Series Spec Delta",
            "description": "Gabinete Gamer Corsair Carbide Series Spec Delta, Mid-Tower, RGB, Lateral em Vidro Temperado, Preto, CC-9011166-WW",
            "url": "https://www.kabum.com.br/produto/100004/gabinete-gamer-corsair-carbide-series-spec-delta-mid-tower-rgb-lateral-em-vidro-temperado-preto-cc-9011166-ww",
            "value": 399.99
        },
        "monitors": [
            {
                "id": 484,
                "title": "Monitor Gamer LG Ultra Gear 27 Full HD",
                "description": "Monitor Gamer LG Ultra Gear 27 Full HD, 144 Hz, 1ms, IPS, HDMI e DisplayPort, sRGB 99%, HDR10, FreeSync, VESA, Altura Ajustável - 27GL650F-B",
                "url": "https://www.kabum.com.br/produto/380514/monitor-gamer-lg-ultra-gear-27-full-hd-144-hz-1ms-ips-hdmi-e-displayport-srgb-99-hdr10-freesync-vesa-altura-ajustavel-27gl650f-b",
                "value": 1559.99
            }
        ],
        "keyboard": {
            "id": 477,
            "title": "Teclado Mecânico Gamer HyperX Alloy Origins Core",
            "description": "Teclado Mecânico Gamer HyperX Alloy Origins Core, RGB, Switch HyperX Red, ABNT2 - HX-KB7RDX-BR",
            "url": "https://www.kabum.com.br/produto/105009/teclado-mecanico-gamer-hyperx-alloy-origins-core-rgb-switch-hyperx-red-abnt2-hx-kb7rdx-br",
            "value": 419.99
        },
        "mouse": {
            "id": 479,
            "title": "Mouse Gamer HyperX Pulsefire Surge",
            "description": "Mouse Gamer HyperX Pulsefire Surge RGB 16000 DPI - HX-MC002B",
            "url": "https://www.kabum.com.br/produto/95566/mouse-gamer-hyperx-pulsefire-surge-rgb-16000-dpi-hx-mc002b",
            "value": 169.89
        },
        "totalValue": 7879.911
    },
    {
        "id": 488,
        "cpu": {
            "id": 490,
            "title": "Processador AMD Ryzen 5 5600X",
            "description": "Processador AMD Ryzen 5 5600X, 3.7GHz (4.6GHz Max Turbo), Cache 35MB, 6 Núcleos, 12 Threads, AM4 - 100-100000065BOX",
            "url": "https://www.kabum.com.br/produto/129451/processador-amd-ryzen-5-5600x-3-7ghz-4-6ghz-max-turbo-cache-35mb-6-nucleos-12-threads-am4-100-100000065box",
            "value": 1199.99
        },
        "motherboard": {
            "id": 492,
            "title": "Placa-Mãe Gigabyte B550M",
            "description": "Placa-Mãe Gigabyte B550M Aorus Elite, AMD AM4, Micro ATX, DDR4",
            "url": "https://www.kabum.com.br/produto/114781/placa-mae-gigabyte-b550m-aorus-elite-amd-am4-micro-atx-ddr4",
            "value": 849.99
        },
        "gpus": [
            {
                "id": 496,
                "title": "GTX 1660 Super",
                "description": "Placa de Vídeo GTX 1660 Super Twin Fan Zotac Gaming NVIDIA GeForce, 6GB, GDDR6 - ZT-T16620F-10L",
                "url": "https://www.kabum.com.br/produto/110396/placa-de-video-gtx-1660-super-twin-fan-zotac-gaming-nvidia-geforce-6gb-gddr6-zt-t16620f-10l",
                "value": 1299.99
            }
        ],
        "hds": [
            {
                "id": 497,
                "title": "HD Seagate 2TB",
                "description": "HD Seagate 2TB BarraCuda, 3.5', SATA - ST2000DM008",
                "url": "https://www.kabum.com.br/produto/100916/hd-seagate-2tb-barracuda-3-5-sata-st2000dm008",
                "value": 299.99
            }
        ],
        "ssds": [
            {
                "id": 501,
                "title": "SSD 512 GB",
                "description": "SSD 512 GB XPG S41 TUF, M.2 PCIe, Leitura: 3500MB/s e Gravação: 2400MB/s - AGAMMIXS41-512G-C",
                "url": "https://www.kabum.com.br/produto/127700/ssd-512-gb-xpg-s41-tuf-m-2-pcie-leitura-3500mb-s-e-gravacao-2400mb-s-agammixs41-512g-c",
                "value": 409.99
            }
        ],
        "rams": [
            {
                "id": 499,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            },
            {
                "id": 500,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            }
        ],
        "fans": [
            {
                "id": 495,
                "title": "Cooler Fan Rise Mode Energy",
                "description": "Cooler Fan Rise Mode Energy, 3 Unidades, 120mm, ARGB, Preto - FN-02-RGB-5V",
                "url": "https://www.kabum.com.br/produto/153647/cooler-fan-rise-mode-energy-3-unidades-120mm-argb-preto-fn-02-rgb-5v",
                "value": 129.99
            }
        ],
        "powerSupply": {
            "id": 494,
            "title": "Fonte Corsair CV550",
            "description": "Fonte Corsair CV550, 550W, 80 Plus Bronze - CP-9020210-BR",
            "url": "https://www.kabum.com.br/produto/108257/fonte-corsair-cv550-550w-80-plus-bronze-cp-9020210-br",
            "value": 359.99
        },
        "cabinet": {
            "id": 489,
            "title": "Gabinete Gamer Corsair Carbide Series Spec Delta",
            "description": "Gabinete Gamer Corsair Carbide Series Spec Delta, Mid-Tower, RGB, Lateral em Vidro Temperado, Preto, CC-9011166-WW",
            "url": "https://www.kabum.com.br/produto/100004/gabinete-gamer-corsair-carbide-series-spec-delta-mid-tower-rgb-lateral-em-vidro-temperado-preto-cc-9011166-ww",
            "value": 399.99
        },
        "monitors": [
            {
                "id": 498,
                "title": "Monitor Gamer LG UltraGear 32 LED",
                "description": "Monitor Gamer LG UltraGear 32 LED, 165 Hz, QHD, 1ms, HDMI/DisplayPort, 95% sRGB, FreeSync Premium, HDR 10, VESA, Preto - 32GN600-B",
                "url": "https://www.kabum.com.br/produto/364835/monitor-gamer-lg-ultragear-32-led-165-hz-qhd-1ms-hdmi-displayport-95-srgb-freesync-premium-hdr-10-vesa-preto-32gn600-b",
                "value": 1899.99
            }
        ],
        "keyboard": {
            "id": 491,
            "title": "Teclado Mecânico Gamer HyperX Alloy Origins Core",
            "description": "Teclado Mecânico Gamer HyperX Alloy Origins Core, RGB, Switch HyperX Red, ABNT2 - HX-KB7RDX-BR",
            "url": "https://www.kabum.com.br/produto/105009/teclado-mecanico-gamer-hyperx-alloy-origins-core-rgb-switch-hyperx-red-abnt2-hx-kb7rdx-br",
            "value": 419.99
        },
        "mouse": {
            "id": 493,
            "title": "Mouse Gamer HyperX Pulsefire Surge",
            "description": "Mouse Gamer HyperX Pulsefire Surge RGB 16000 DPI - HX-MC002B",
            "url": "https://www.kabum.com.br/produto/95566/mouse-gamer-hyperx-pulsefire-surge-rgb-16000-dpi-hx-mc002b",
            "value": 169.89
        },
        "totalValue": 8219.911
    },
    {
        "id": 502,
        "cpu": {
            "id": 504,
            "title": "Processador AMD Ryzen 7 5800X",
            "description": "Processador AMD Ryzen 7 5800X, 3.8GHz (4.7GHz Max Turbo), Cache 36MB, Octa Core, 16 Threads, AM4 - 100-100000063WOF",
            "url": "https://www.kabum.com.br/produto/129459/processador-amd-ryzen-7-5800x-3-8ghz-4-7ghz-max-turbo-cache-36mb-octa-core-16-threads-am4-100-100000063wof",
            "value": 1899.99
        },
        "motherboard": {
            "id": 506,
            "title": "Placa Mãe B650M-A MSI PRO Wi-Fi",
            "description": "Placa Mãe B650M-A MSI PRO Wi-Fi, AMD AM5, mATX, DDR5 - PRO B650M-A WIFI",
            "url": "https://www.kabum.com.br/produto/392613/placa-mae-b650m-a-msi-pro-wi-fi-amd-am5-matx-ddr5-pro-b650m-a-wifi",
            "value": 1999.99
        },
        "gpus": [
            {
                "id": 510,
                "title": "GTX 1660 Super",
                "description": "Placa de Vídeo GTX 1660 Super Twin Fan Zotac Gaming NVIDIA GeForce, 6GB, GDDR6 - ZT-T16620F-10L",
                "url": "https://www.kabum.com.br/produto/110396/placa-de-video-gtx-1660-super-twin-fan-zotac-gaming-nvidia-geforce-6gb-gddr6-zt-t16620f-10l",
                "value": 1299.99
            }
        ],
        "hds": [
            {
                "id": 511,
                "title": "HD Seagate 2TB",
                "description": "HD Seagate 2TB BarraCuda, 3.5', SATA - ST2000DM008",
                "url": "https://www.kabum.com.br/produto/100916/hd-seagate-2tb-barracuda-3-5-sata-st2000dm008",
                "value": 299.99
            }
        ],
        "ssds": [
            {
                "id": 515,
                "title": "SSD 512 GB",
                "description": "SSD 512 GB XPG S41 TUF, M.2 PCIe, Leitura: 3500MB/s e Gravação: 2400MB/s - AGAMMIXS41-512G-C",
                "url": "https://www.kabum.com.br/produto/127700/ssd-512-gb-xpg-s41-tuf-m-2-pcie-leitura-3500mb-s-e-gravacao-2400mb-s-agammixs41-512g-c",
                "value": 409.99
            }
        ],
        "rams": [
            {
                "id": 513,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            },
            {
                "id": 514,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            }
        ],
        "fans": [
            {
                "id": 509,
                "title": "Cooler Fan Rise Mode Energy",
                "description": "Cooler Fan Rise Mode Energy, 3 Unidades, 120mm, ARGB, Preto - FN-02-RGB-5V",
                "url": "https://www.kabum.com.br/produto/153647/cooler-fan-rise-mode-energy-3-unidades-120mm-argb-preto-fn-02-rgb-5v",
                "value": 129.99
            }
        ],
        "powerSupply": {
            "id": 508,
            "title": "Fonte Corsair CV550",
            "description": "Fonte Corsair CV550, 550W, 80 Plus Bronze - CP-9020210-BR",
            "url": "https://www.kabum.com.br/produto/108257/fonte-corsair-cv550-550w-80-plus-bronze-cp-9020210-br",
            "value": 359.99
        },
        "cabinet": {
            "id": 503,
            "title": "Gabinete Gamer Corsair Carbide Series Spec Delta",
            "description": "Gabinete Gamer Corsair Carbide Series Spec Delta, Mid-Tower, RGB, Lateral em Vidro Temperado, Preto, CC-9011166-WW",
            "url": "https://www.kabum.com.br/produto/100004/gabinete-gamer-corsair-carbide-series-spec-delta-mid-tower-rgb-lateral-em-vidro-temperado-preto-cc-9011166-ww",
            "value": 399.99
        },
        "monitors": [
            {
                "id": 512,
                "title": "Monitor Gamer LG UltraGear 32 LED",
                "description": "Monitor Gamer LG UltraGear 32 LED, 165 Hz, QHD, 1ms, HDMI/DisplayPort, 95% sRGB, FreeSync Premium, HDR 10, VESA, Preto - 32GN600-B",
                "url": "https://www.kabum.com.br/produto/364835/monitor-gamer-lg-ultragear-32-led-165-hz-qhd-1ms-hdmi-displayport-95-srgb-freesync-premium-hdr-10-vesa-preto-32gn600-b",
                "value": 1899.99
            }
        ],
        "keyboard": {
            "id": 505,
            "title": "Teclado Mecânico Gamer HyperX Alloy Origins Core",
            "description": "Teclado Mecânico Gamer HyperX Alloy Origins Core, RGB, Switch HyperX Red, ABNT2 - HX-KB7RDX-BR",
            "url": "https://www.kabum.com.br/produto/105009/teclado-mecanico-gamer-hyperx-alloy-origins-core-rgb-switch-hyperx-red-abnt2-hx-kb7rdx-br",
            "value": 419.99
        },
        "mouse": {
            "id": 507,
            "title": "Mouse Gamer HyperX Pulsefire Surge",
            "description": "Mouse Gamer HyperX Pulsefire Surge RGB 16000 DPI - HX-MC002B",
            "url": "https://www.kabum.com.br/produto/95566/mouse-gamer-hyperx-pulsefire-surge-rgb-16000-dpi-hx-mc002b",
            "value": 169.89
        },
        "totalValue": 10069.911
    }
]
Enter fullscreen mode Exit fullscreen mode

Podemos ver que existem três setups com os seguintes ids: 474, 488 e 502. Vamos usar a função deleteSetup() para deletar o setup com id 474 fazendo uma requisição DELETE por meio do postman.

Após isso, vamos usar GET de novo para ver como ficou o banco de dados:

[
    {
        "id": 488,
        "cpu": {
            "id": 490,
            "title": "Processador AMD Ryzen 5 5600X",
            "description": "Processador AMD Ryzen 5 5600X, 3.7GHz (4.6GHz Max Turbo), Cache 35MB, 6 Núcleos, 12 Threads, AM4 - 100-100000065BOX",
            "url": "https://www.kabum.com.br/produto/129451/processador-amd-ryzen-5-5600x-3-7ghz-4-6ghz-max-turbo-cache-35mb-6-nucleos-12-threads-am4-100-100000065box",
            "value": 1199.99
        },
        "motherboard": {
            "id": 492,
            "title": "Placa-Mãe Gigabyte B550M",
            "description": "Placa-Mãe Gigabyte B550M Aorus Elite, AMD AM4, Micro ATX, DDR4",
            "url": "https://www.kabum.com.br/produto/114781/placa-mae-gigabyte-b550m-aorus-elite-amd-am4-micro-atx-ddr4",
            "value": 849.99
        },
        "gpus": [
            {
                "id": 496,
                "title": "GTX 1660 Super",
                "description": "Placa de Vídeo GTX 1660 Super Twin Fan Zotac Gaming NVIDIA GeForce, 6GB, GDDR6 - ZT-T16620F-10L",
                "url": "https://www.kabum.com.br/produto/110396/placa-de-video-gtx-1660-super-twin-fan-zotac-gaming-nvidia-geforce-6gb-gddr6-zt-t16620f-10l",
                "value": 1299.99
            }
        ],
        "hds": [
            {
                "id": 497,
                "title": "HD Seagate 2TB",
                "description": "HD Seagate 2TB BarraCuda, 3.5', SATA - ST2000DM008",
                "url": "https://www.kabum.com.br/produto/100916/hd-seagate-2tb-barracuda-3-5-sata-st2000dm008",
                "value": 299.99
            }
        ],
        "ssds": [
            {
                "id": 501,
                "title": "SSD 512 GB",
                "description": "SSD 512 GB XPG S41 TUF, M.2 PCIe, Leitura: 3500MB/s e Gravação: 2400MB/s - AGAMMIXS41-512G-C",
                "url": "https://www.kabum.com.br/produto/127700/ssd-512-gb-xpg-s41-tuf-m-2-pcie-leitura-3500mb-s-e-gravacao-2400mb-s-agammixs41-512g-c",
                "value": 409.99
            }
        ],
        "rams": [
            {
                "id": 499,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            },
            {
                "id": 500,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            }
        ],
        "fans": [
            {
                "id": 495,
                "title": "Cooler Fan Rise Mode Energy",
                "description": "Cooler Fan Rise Mode Energy, 3 Unidades, 120mm, ARGB, Preto - FN-02-RGB-5V",
                "url": "https://www.kabum.com.br/produto/153647/cooler-fan-rise-mode-energy-3-unidades-120mm-argb-preto-fn-02-rgb-5v",
                "value": 129.99
            }
        ],
        "powerSupply": {
            "id": 494,
            "title": "Fonte Corsair CV550",
            "description": "Fonte Corsair CV550, 550W, 80 Plus Bronze - CP-9020210-BR",
            "url": "https://www.kabum.com.br/produto/108257/fonte-corsair-cv550-550w-80-plus-bronze-cp-9020210-br",
            "value": 359.99
        },
        "cabinet": {
            "id": 489,
            "title": "Gabinete Gamer Corsair Carbide Series Spec Delta",
            "description": "Gabinete Gamer Corsair Carbide Series Spec Delta, Mid-Tower, RGB, Lateral em Vidro Temperado, Preto, CC-9011166-WW",
            "url": "https://www.kabum.com.br/produto/100004/gabinete-gamer-corsair-carbide-series-spec-delta-mid-tower-rgb-lateral-em-vidro-temperado-preto-cc-9011166-ww",
            "value": 399.99
        },
        "monitors": [
            {
                "id": 498,
                "title": "Monitor Gamer LG UltraGear 32 LED",
                "description": "Monitor Gamer LG UltraGear 32 LED, 165 Hz, QHD, 1ms, HDMI/DisplayPort, 95% sRGB, FreeSync Premium, HDR 10, VESA, Preto - 32GN600-B",
                "url": "https://www.kabum.com.br/produto/364835/monitor-gamer-lg-ultragear-32-led-165-hz-qhd-1ms-hdmi-displayport-95-srgb-freesync-premium-hdr-10-vesa-preto-32gn600-b",
                "value": 1899.99
            }
        ],
        "keyboard": {
            "id": 491,
            "title": "Teclado Mecânico Gamer HyperX Alloy Origins Core",
            "description": "Teclado Mecânico Gamer HyperX Alloy Origins Core, RGB, Switch HyperX Red, ABNT2 - HX-KB7RDX-BR",
            "url": "https://www.kabum.com.br/produto/105009/teclado-mecanico-gamer-hyperx-alloy-origins-core-rgb-switch-hyperx-red-abnt2-hx-kb7rdx-br",
            "value": 419.99
        },
        "mouse": {
            "id": 493,
            "title": "Mouse Gamer HyperX Pulsefire Surge",
            "description": "Mouse Gamer HyperX Pulsefire Surge RGB 16000 DPI - HX-MC002B",
            "url": "https://www.kabum.com.br/produto/95566/mouse-gamer-hyperx-pulsefire-surge-rgb-16000-dpi-hx-mc002b",
            "value": 169.89
        },
        "totalValue": 8219.911
    },
    {
        "id": 502,
        "cpu": {
            "id": 504,
            "title": "Processador AMD Ryzen 7 5800X",
            "description": "Processador AMD Ryzen 7 5800X, 3.8GHz (4.7GHz Max Turbo), Cache 36MB, Octa Core, 16 Threads, AM4 - 100-100000063WOF",
            "url": "https://www.kabum.com.br/produto/129459/processador-amd-ryzen-7-5800x-3-8ghz-4-7ghz-max-turbo-cache-36mb-octa-core-16-threads-am4-100-100000063wof",
            "value": 1899.99
        },
        "motherboard": {
            "id": 506,
            "title": "Placa Mãe B650M-A MSI PRO Wi-Fi",
            "description": "Placa Mãe B650M-A MSI PRO Wi-Fi, AMD AM5, mATX, DDR5 - PRO B650M-A WIFI",
            "url": "https://www.kabum.com.br/produto/392613/placa-mae-b650m-a-msi-pro-wi-fi-amd-am5-matx-ddr5-pro-b650m-a-wifi",
            "value": 1999.99
        },
        "gpus": [
            {
                "id": 510,
                "title": "GTX 1660 Super",
                "description": "Placa de Vídeo GTX 1660 Super Twin Fan Zotac Gaming NVIDIA GeForce, 6GB, GDDR6 - ZT-T16620F-10L",
                "url": "https://www.kabum.com.br/produto/110396/placa-de-video-gtx-1660-super-twin-fan-zotac-gaming-nvidia-geforce-6gb-gddr6-zt-t16620f-10l",
                "value": 1299.99
            }
        ],
        "hds": [
            {
                "id": 511,
                "title": "HD Seagate 2TB",
                "description": "HD Seagate 2TB BarraCuda, 3.5', SATA - ST2000DM008",
                "url": "https://www.kabum.com.br/produto/100916/hd-seagate-2tb-barracuda-3-5-sata-st2000dm008",
                "value": 299.99
            }
        ],
        "ssds": [
            {
                "id": 515,
                "title": "SSD 512 GB",
                "description": "SSD 512 GB XPG S41 TUF, M.2 PCIe, Leitura: 3500MB/s e Gravação: 2400MB/s - AGAMMIXS41-512G-C",
                "url": "https://www.kabum.com.br/produto/127700/ssd-512-gb-xpg-s41-tuf-m-2-pcie-leitura-3500mb-s-e-gravacao-2400mb-s-agammixs41-512g-c",
                "value": 409.99
            }
        ],
        "rams": [
            {
                "id": 513,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            },
            {
                "id": 514,
                "title": "Memoria, Ram 8, Gb",
                "description": "Memoria, Ram 8, Gb, Xpg, D60g, 3200 Mhz, Rgb, Ddr4, Ax4u320088g16ast60.",
                "url": "https://www.kabum.com.br/produto/219915/memoria-ram-8-gb-xpg-d60g-3200-mhz-rgb-ddr4-ax4u320088g16ast60-",
                "value": 390.06
            }
        ],
        "fans": [
            {
                "id": 509,
                "title": "Cooler Fan Rise Mode Energy",
                "description": "Cooler Fan Rise Mode Energy, 3 Unidades, 120mm, ARGB, Preto - FN-02-RGB-5V",
                "url": "https://www.kabum.com.br/produto/153647/cooler-fan-rise-mode-energy-3-unidades-120mm-argb-preto-fn-02-rgb-5v",
                "value": 129.99
            }
        ],
        "powerSupply": {
            "id": 508,
            "title": "Fonte Corsair CV550",
            "description": "Fonte Corsair CV550, 550W, 80 Plus Bronze - CP-9020210-BR",
            "url": "https://www.kabum.com.br/produto/108257/fonte-corsair-cv550-550w-80-plus-bronze-cp-9020210-br",
            "value": 359.99
        },
        "cabinet": {
            "id": 503,
            "title": "Gabinete Gamer Corsair Carbide Series Spec Delta",
            "description": "Gabinete Gamer Corsair Carbide Series Spec Delta, Mid-Tower, RGB, Lateral em Vidro Temperado, Preto, CC-9011166-WW",
            "url": "https://www.kabum.com.br/produto/100004/gabinete-gamer-corsair-carbide-series-spec-delta-mid-tower-rgb-lateral-em-vidro-temperado-preto-cc-9011166-ww",
            "value": 399.99
        },
        "monitors": [
            {
                "id": 512,
                "title": "Monitor Gamer LG UltraGear 32 LED",
                "description": "Monitor Gamer LG UltraGear 32 LED, 165 Hz, QHD, 1ms, HDMI/DisplayPort, 95% sRGB, FreeSync Premium, HDR 10, VESA, Preto - 32GN600-B",
                "url": "https://www.kabum.com.br/produto/364835/monitor-gamer-lg-ultragear-32-led-165-hz-qhd-1ms-hdmi-displayport-95-srgb-freesync-premium-hdr-10-vesa-preto-32gn600-b",
                "value": 1899.99
            }
        ],
        "keyboard": {
            "id": 505,
            "title": "Teclado Mecânico Gamer HyperX Alloy Origins Core",
            "description": "Teclado Mecânico Gamer HyperX Alloy Origins Core, RGB, Switch HyperX Red, ABNT2 - HX-KB7RDX-BR",
            "url": "https://www.kabum.com.br/produto/105009/teclado-mecanico-gamer-hyperx-alloy-origins-core-rgb-switch-hyperx-red-abnt2-hx-kb7rdx-br",
            "value": 419.99
        },
        "mouse": {
            "id": 507,
            "title": "Mouse Gamer HyperX Pulsefire Surge",
            "description": "Mouse Gamer HyperX Pulsefire Surge RGB 16000 DPI - HX-MC002B",
            "url": "https://www.kabum.com.br/produto/95566/mouse-gamer-hyperx-pulsefire-surge-rgb-16000-dpi-hx-mc002b",
            "value": 169.89
        },
        "totalValue": 10069.911
    }
]
Enter fullscreen mode Exit fullscreen mode

A nossa função funcionou :), o setup foi deletado. Por fim, usaremos a função deleteAllSetups() para deletar todos os setups e usar GET de novo para obtermos a seguinte resposta:

[]
Enter fullscreen mode Exit fullscreen mode

Recebemos um JSON vazio, nossa outra função também funcionou! E assim terminamos nosso post de hoje.

Próximo post

No próximo post vamos finalizar a primeira parte dessa nossa API simples melhorando sua segurança, impedindo que os ids dos setups e das peças sejam sobrescritos, por exemplo.

Repositório no github:

pchunter-api

PCHunter API

Post anterior:

💖 💪 🙅 🚩
ronaldocoding
Ronaldo Costa de Freitas

Posted on November 12, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related