Spring Rest Post Request z jednym parametrem

0

błąd jaki otrzymuję
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundaryRgRatimdDi8qF1jN;charset=UTF-8' not supported]

robiąc coś takiego na froncie

    confirmOrder() {
      const formData = new FormData();
      formData.append("id", this.orderElements.items[0].orderId);
      
      ApiService.post(
          "/order-status", 
          formData,
          {
            headers: { "Content-Type": "application/json" }
          } // bez tego ten sam błąd  
          ).then(() => {      
            this.$refs.orderDetailModal.hide();
            this.getOrders();
          });
    },

endpoint

    @PostMapping("/order-status")
    public void updateStatus(@RequestBody Integer id) {

        Order order = orderRepository.findById(id).orElse(null);

        if(order != null)
        {
            order.setStatus(Order.Status.CONFIRMED);
            orderRepository.save(order);
        }
    }

nigdzie multiparta nie mam

0

W Spingu to chyba metoda nie może po prostu zwracać voida nie robiąc czegoś?

W internecie podpowiadają, żeby dodać adnotację @ResponseStatus(HttpStatus.NO_CONTENT)

Edit: wróć! Żeby to miało ręce i nogi to powinieneś raczej zmienić typ metody właśnie na HttpStatus i zwracać adekwatny w zależności od wyniku operacji.

Jest HttpStatus.CREATED, który by tu ładnie pasował.

Edit numer 2: poza wygląda na to, że używasz Optionala lub czegoś podobnego, więc wypadałoby to obsłużyć jakoś ładnie lambdami, a nie .orElse(null); :>

1

Integer nie jest poprawnym jsonem, opakuj to w obiekt. Content-Type na application/json po stronie klienta - jak najbardziej.

Metoda może zostać jak najbardziej voidowa, oznacza to tyle, że domyślnie zwrócisz 200 OK.

0
 headers: { "Content-Type": "application/json" }

"Accept", a ni "Content-Type"!

0

generalnie pomogło przestawienie z @RequestBody na @RequestParam

1 użytkowników online, w tym zalogowanych: 0, gości: 1