#10 [SpringBoot/KotlinでBFF]Service層を追加

複数の外部APIを呼び出してハンドリングするService層を追加する。

Package
Service層用にserviceパッケージを作成

Serviceクラス
@Autowiredで外部APIを呼び出すrepositoryクラスを設定し、タスクを取得するfunctionを追加

@Service
class TaskService @Autowired constructor(
val taskRepository: TaskRepository,
val userRepository: UserRepository) {

fun getTask(taskId: Int): Task {
val task = taskRepository.getTask(taskId)
val user = userRepository.getUser(1)

return Task(
taskId = task?.taskId ?: 0,
title = task?.title ?: "",
description = task?.description ?: "",
userName = user?.userName ?: "unknown")
}
}

Controller修正
Controllerは追加したServiceクラスのfunctionを呼び出すように修正

@GetMapping("/{taskId}")
@ResponseBody
@ResponseStatus(HttpStatus.OK)
fun getTask(@PathVariable("taskId") taskId: Int): Task {
return taskService.getTask(taskId)
}

起動確認
サービスを起動し結果を確認
http://localhost:8080/tasks/12345

{"taskId":12345,"title":"タスクのタイトル","description":"タスクの詳細説明","userName":"タスクの管理者A"}

コード
https://github.com/little-engineer/bff-sample/pull/13

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
little
15年以上プログラマーをしているエンジニアです。Kotlin, Java, Python, C++を使用したServerSideの開発に携わってきました。とりあえずやってみるスタイルで記事を更新していきます。