2 Get
djmil edited this page 2023-07-24 19:46:04 +02:00

src/main/java/djmil/cashcard/CashCardController.java

package example.cashcard;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CashCardController {
	@GetMapping("/cashcards/{requestedId}")
	public ResponseEntity<CashCard> findById(@PathVariable Long requestedId) {
		if (requestedId.equals(99L)) {
		    CashCard cashCard = new CashCard(99L, 123.45);
	        return ResponseEntity.ok(cashCard);
	    } else {
	        return ResponseEntity.notFound().build();
	    }
	}
}

@GetMapping

Needs the URI Path and tells Spring to route GET requests strictly to the findById method.

Alternative variant for providing URI mapping for @RestConttroller

@RestController
@RequestMapping("/cashcards")
public class CashCardController {

   @GetMapping("/{requestedId}")
   public ResponseEntity<String> findById() {

@PathVariable

Spring needs to know how to get the value of the requestedId parameter. This is done using the @PathVariable annotation. The fact that the parameter name matches the {requestedId} text (URI Path) within the @GetMapping parameter allows Spring to assign (inject) the correct value to the requestedId variable.

ResponseEntity

REST says that the Response needs to contain a Cash Card in its body, and a Response code of 200 (OK). Spring Web provides the ResponseEntity class for this purpose. It also provides several utility methods to produce Response Entities. Here ResponseEntity used to create a Response with code 200 (OK), and a body containing a CashCard.

Testing

Testing GET and other REST request is considerate to be IntegrationTests.

Also, after running the application, you can use browser (or any other web-testing tool) by visiting http://localhost:8080/cashcards/99