Spring Boot - End Point com um GetMapping com uma lista de parametros opcionais

Caros, estou tentando fazer um endpoint que deveria enviar uma lista de paramentos para consulta , sendo o primeiro obrigatorio e os outros não. A consulta seria feita conforme os codigos colocado, se so colocasse um parametro somente dados daquele tipo ia retornar, ou 2 parametro e assim por diante.

Não sei se o melhor seria usar @PathVariable ou @RequestParam

A URL seria do tipo : dada?listaCodDom=cod1,cod2,cod3

algo como isso:

@PublicAccess
	@GetMapping(value = "consulta/{aquiUmaLista}", produces = { MediaType.APPLICATION_JSON_VALUE })
	@Operation(summary = " ", description = " ", method = "GET")
	@ApiResponses(value = 
	      { @ApiResponse(responseCode = "200", description = "OK"),
			@ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(implementation = ErrorResponse.class))),
			@ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(implementation = ErrorResponse.class))),
			@ApiResponse(responseCode = "404", description = "Not Found", content = @Content(schema = @Schema(implementation = ErrorResponse.class))),
			@ApiResponse(responseCode = "500", description = "Internal error", content = @Content(schema = @Schema(implementation = ErrorResponse.class))) })
	public ResponseEntity<ReferencesCodeDto> getReferencesCodeDesc(@PathVariable String codDomain) {

		ReferencesCodeDto referencesCodeDto = processService.getReferencesCodeDescParam(codDomain);
		if (referencesCodeDto == null) {
			throw new ErroNotFoundException(ErrorMessagesConstants.RESOURCE_NOT_FOUND);
		}
		return ResponseEntity.status(HttpStatus.OK).body(referencesCodeDto);

	}

Para fazer o que você deseja o indicado seria utilizar o @RequestParam e marcar os parâmetros desejados como opcionais, o @PathVariable normalmente é utilizado quando se deseja obrigar que informações sejam passadas.

mas como eu passaria esta lista de parametros? e o que diria que ele não é obrigatorio e sim opcional?

Aqui tem um material que mostra alguns exemplos de como utilizar: https://www.baeldung.com/spring-request-param

1 curtida