SpringBootで登録画面用APIを作成する流れ
登録画面用APIのコントローラー層
@CrossOrigin (A)
@RestController
@RequestMapping(value= Urls.BOK_01) // value値は定数管理します。
public class BookController {
@Autowired private BookService bookService; // (B)
@Autowired private ModelMapper modelMapper;
@PostMapping // (C)
public PostResponse post(@Validated @RequestBody PostRequest request) {
MBook mBook = modelMapper.map(request, MBook.class); // (D)
MBook registered = bookService.register(mBook);
PostResponse response = modelMapper.map(registered, PostResponse.class);
return response;
}
}
// (A)@CrossOrigin・・・CORS対策です。なくても動く人は省略してください。
// @RestController・・・Rest APIのコントローラーであることを宣言します。@Controllerでも良いですが、Rest APIであることを明示するためにこちらを使用します。
// Urls.BOK_01・・・パスは定数クラスにまとめておきます。
コンストラクターインジェクションの方が良い場合は書き換えます。
Postに対する実行メソッドであることを明示するために、@RequestMapppingではなく@PostMappingを推奨します。
モデルマッパーを使用して詰め替えます。
@Data
public class PostRequest {
@NotBlank
@Hiragana
private String bookName;
private String bookNameKana;
private String authorName;
private String authorNameKana;
private String isbn;
private LocalDate issuedAt;
private Integer price;
private LocalDateTime registerdAt;
}
@Data
public class PostResponse {
private Integer bookId;
}
登録画面用APIのサービス層
public interface BookService {
MBook register(MBook mBook);
}
@Service
public class BookServiceImpl implements BookService {
@Autowired private MBookDao mBookDao;
@Autowired private BookDao bookDao;
@Autowired private ModelMapper modelMapper;
@Override
public MBook register(MBook mBook) {
int inserted = mBookDao.insert(mBook);
return mBook;
}
}
登録画面用APIのデータ層
@Dao
@ConfigAutowireable
public interface MBookDao {
/**
* @param entity
* @return affected rows
*/
@Insert
int insert(MBook entity);
}