メモだよ
✏️ パラメータ受け取り
RequestParamでクエリパラメータを取れる。他の取り方もある!
Spring Boot 使い方メモ - Qiita
@GetMapping(value = "/")
@ResponseBody
String getType(@RequestParam Map<String, String> queryParameters) {
....
}
✏️ Objectに変換する
ObjectMapperをつかってmapからObjectにする
クエリパラメータがsnake caseでくる場合は、ObjectMapperに設定を追加する
XXForm form = new ObjectMapper().convertValue(queryParameters, XXXForm.class);
XXForm form = new ObjectMapper().setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE).convertValue(queryParameters, XXXForm.class);
✏️ validationを実行する
Formにバリデーションを定義して、Validation実行。
精査に問題があったときは、violationsにエラー情報が設定される。
public class XXXForm {
@NotNull
public String type;
}
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
Validator validator = validatorFactory.getValidator();
Set<ConstraintViolation<Object>> violations = validator.validate(form);
if (!violations.isEmpty()) {
}
✏️ 全体はこんな感じ
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.validation.*;
import java.util.Map;
import java.util.Set;
@Controller
public class AuthenticationController {
@GetMapping(value = "/")
@ResponseBody
String getType(@RequestParam Map<String, String> queryParameters) {
XXForm form = getObjectMapper().convertValue(queryParameters, XXXForm.class);
validate(authorize);
return ...
}
private ObjectMapper getObjectMapper() {
return new ObjectMapper().setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
}
private void validate(Object form) {
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
Validator validator = validatorFactory.getValidator();
Set<ConstraintViolation<Object>> violations = validator.validate(form);
if (!violations.isEmpty()) {
}
}
}
import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.NotNull;
public class XXXForm {
@NotNull
public String type;
public String state;
@AssertTrue
public boolean isType() {
return responseType.equals("hogehoge");
}
}