Wpis z mikrobloga

Mam projekt w springu, chcę zrobić asynchroniczne dodawanie itemów do koszyka w angularjs.

Czy ktoś wie czemu
$http({
method: 'GET',
url: '/rest/cart/' + cartId
}).then(function successRefresh(singleCart) {
console.log("Success, im inside");
}, function errorCallback(singleCart) {
console.log("error in refreshCart");
});

zwraca HTTP Status 400 - Incorrect request, check request data?
/rest/cart/{cartId} jest odpowiednio mapowany, cartId ma postać typu
AE16AF7C24A1ABAFC67ECC6DB0175ABB

  • 26
@Lipathor:
Z controllera któy mapuje /rest/cart/{cartId} zwracany jest obiekt Cart.
ustawiam $scope.cart = singleCart; wewnatrz successRefresh, nigdy jednak się tam nie dostaje, bo zawsze wchodzi w errorCallback
@ArturR95:

@RequestMapping(value = "/{cartId}", method = RequestMethod.GET)
public @ResponseBody Cart read(@PathVariable(value = "cartId") String cartId) {
System.out.println("I'm in read method in /rest/cart controller. CartId: " + cartId);
for (Item item : cartService.read(cartId).getProducts().values()) {
System.out.println(item.getProduct().getProductName());
}
return cartService.read(cartId);
}
@ArturR95: czy w javie ścieżka do tego endpointa to na 100% /rest/cart/{cartId}? czy kontroler ma ustawiony poprawny request mapping? Czy adnotacja kontrolera to RestController ( ͡° ͜ʖ ͡°)?
Skoro leci 400 to szukałbym przyczyny w mapowaniu, w logach podczas startup'u spring wypisuje w logach zarejestrowane endpointy i ich ścieżki
@michalion:
Adnotacja klasy kontrolera:
@RestController
@RequestMapping(value = "rest/cart")
public class CartRestController

I requestmapping dla kontrolera który miałby złapać to /rest/cart/{cartId}

@RequestMapping(value = "/{cartId}", method = RequestMethod.GET)
public @ResponseBody Cart read(@PathVariable(value = "cartId") String cartId) {
System.out.println("I'm in read method in /rest/cart controller. CartId: " + cartId);
for (Item item : cartService.read(cartId).getProducts().values()) {
System.out.println(item.getProduct().getProductName());
}
return cartService.read(cartId);
}
@ArturR95: Ok, skoro po curl'u odpytałeś się endpointa i odpowiedział 500 (a nie 4xx) to oznacza że endpoint istnieje
i jest dobrze skonfigurowany. Sprawdź stack w poszukiwaniu co wysypało błąd (ale to na później ofkors).

W takim razie to wina front-endu.

Spróbuj do atrybutu url w obiekcie który przekazujesz $http dać bezwzględny url, tj. 'http://127.0.0.1:8080/rest/cart/'+cartId
@michalion:
Dałem:

$http({
method: 'GET',
url: 'http://localhost:8080/rest/cart/' + cartId
})

Gdy próbuje bezpośrednio w przeglądarce wklepać http://localhost:8080/rest/cart/8EA82A4472141E4DE2C96439EC7EA951
to dostaję HTTP Status 400 - Incorrect request, check request data

natomiast gdy próbuję bezpośrednio wklepać
http://localhost:8080/rest/cart/1
to dostaję HTTP Status 500 - Internal server error
Pobierz ArturR95 - @michalion: 
Dałem:

$http({
 method: 'GET',
 url: 'http://localhost:...
źródło: comment_CfQ9YQpglKddNpqtiDX6jvLbn54gpVZT.jpg
@ArturR95: aaa, nie mam pojęcia, wygląda na to że jednak spring nie rozumie takiego PathVariable (bo cart/1 przechodzi). Masakra, niestety muszę odesłać Cię do stack overflow, mózg mi już wysiada na dziś :(