私は使い方データベース用に作成したRESTfulサービスを持っています。 必須パラメータの開始日は&です。操作可能なパラメータは、ユーザ名、client-ip & remote-ipです。オプションの入力を処理する最良の方法SpringのRESTful API
私はこの作業を持っていますが、実装するためのより良い方法があるかどうかを確認したかった。ここでは
は、私のリソースクラスである:
public List<DTO> getUsageByDate(String startDate, String endDate, String userName, String localIp, String remoteIp)
throws BadParameterException {
StringBuilder sql = new StringBuilder(
"select * from usage where process_time >= :start_date and process_time < :end_date");
if(userName != null) {
sql.append(" AND user_name = :user_name");
}
if(localIp != null) {
sql.append(" AND local_ip_address = :local_ip");
}
if(remoteIp != null){
sql.append(" AND remote_ip_address = :remote_ip");
}
SqlParameterSource namedParameters = new MapSqlParameterSource().addValue("start_date", startDate)
.addValue("end_date", endDate).addValue("user_name", userName).addValue("local_ip", localIp)
.addValue("nas_ip", remoteIp);
try {
return jdbcTemplate.query(sql.toString(), namedParameters,
new BeanPropertyRowMapper<DTO>(DTO.class));
} catch (EmptyResultDataAccessException e) {
throw new BadParameterException();
}
}
:
@RequestMapping(value = "/usage", method = RequestMethod.GET)
@ApiOperation(value = "Usage Sessions - JSON Body", notes = "GET method for users by date range")
public List<DTO> getUsageByDate(@RequestParam(value = "start-date", required = true) final String startDate,
@RequestParam(value = "end-date", required = true) final String endDate,
@RequestParam(value = "user-name", required = false) final String userName,
@RequestParam(value = "client-ip", required = false) final String clientIp,
@RequestParam(value = "remote-ip", required = false) final String nasIp) throws BadParameterException {
return aaaService.findUsageByDate(startDate, endDate, userName, clientIp,remoteIp);
}
マイDAOの実装は次のようになります
どんな考えが今でも少し長引いているようです。
おかげ
required = trueがデフォルトです。オプションのパラメーターの場合は、必須属性を追加する必要はありません。 – pczeus
フィードバックいただきありがとうございます。 if文を使った実装にはより良い方法がありますか? – Xathras
私は通常これをJSR303経由で行います。あなたはこのオプションを考えましたか? – dambros