REST APIでフィルタリングをサポートする方法

なぜAPIにフィルタリング機能が必要になるのか

Webサービスを運営している時に、サーバサイドではAPIにフィルタリング機能を求められる事がしばしば起こります。このようなAPIの一例として、タスク管理ツールでのタスクの一覧を返す以下のようなAPIがあります。

openapi: 3.0.1
info:
  title: OpenAPI definition
  version: v0
servers:
- url: http://localhost:8080
  description: Generated server url
paths:
  /tasks:
    get:
      tags:
      - tasks-controller
      summary: タスクをリストアップする
      operationId: listTasks
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListTasksResponse"
components:
  schemas:
    ListTasksResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: "#/components/schemas/TaskDto"
    Task:
      type: object
      properties:
        id:
          type: string
          description: ID
          format: uuid
        title:
          type: string
          description: タスクの名前です。
        description:
          type: string
          description: タスクの説明です。
        completed:
          type: boolean
          description: 完了したかどうか。
        creatAt:
          type: string
          description: 作成日時です。
          format: date-time
        updateAt:
          type: string
          description: 更新日時です。
          format: date-time
      description: タスクです。

このAPIに対して、「タスクの名前でフィルタリングしたい」、「未完了のものだけ返して欲しい」とか、「未完了のもので1週間以上更新のないものをリストアップしたい」というような要望が出てくるのは一般的です。フィルタリングの処理そのものを実装するのは、RDBMSなどのデータベースへのクエリに条件を追加するだけなので難しくはないでしょう。

続きを読む

TerraformでAPIGatewayにCognitoをオーソライザとして使用する環境を構築してみた Part2

Part2ではAPIGatewayの方を構築していきます。Part1で作成したCognitoをオーソライザとして使用する構成です。 またAPIGatewayのAPIをコールするとLambdaを実行するようにしたいので、一緒にLambdaも作成してます。 Lambdaはnodejs18.xを使用します。

gole

続きを読む

TerraformでAPIGatewayにCognitoをオーソライザとして使用する環境を構築してみた Part1

Cognitoの構築方法を忘れないように、Terraformを使ってコード化しておこうと思います。 また、せっかくなのでAPIGatewayを前段に配置してCognitoをオーソライザとして使ってみるところまでを試してみようと思います。 こちらの記事(Part1)ではCognitoの構築をメインに記述します。(※今回IDプールは使用しませんが後学のためにコード化だけしています。) Part2ではAPIGatewayの構築とCognitoのオーソライザ設定を主に記述します。

gole

続きを読む

Keycloakの知識を背景に、AWS Cognitoを調査してみて感じたこと

Keycloakの使用方法はある程度確認したので、今度はAWSのCognitoを自分への夏休みの宿題としてちょっとだけ調査してみました。 実際にCognitoを触ってみて、Keycloakとどこが違うのかを軽く確認したのでその内容を感想レベルで記述していこうと思います。

続きを読む

KeycloakのAdmin REST APIでユーザを作成する

前回の記事でAdmin REST APIを使ってレルムの作成を行いました。

今回はユーザの作成をして、そのユーザにレルムの作成権限をマッピングしてみようと思います。

マスターレルムにユーザを作成して、そのユーザでレルムを作成することで作成したレルムの管理をそのユーザで行うことができます。 (※レルムを作成したユーザには自動でそのレルムのアクセス権限が付与されます。)

They will be granted full access to any new realm they create.

続きを読む

KeycloakのAdmin REST APIでレルムを作成してみる

Keycloakを使用する機会があったので、色々と使い方を調査してみました。

Keycloakは管理画面を提供してくれているのですが、今回は管理画面からではなくAdmin REST APIを使用して「レルム」の作成をしてみます。

なお、管理画面の操作方法については公式ドキュメントに記載があります。

続きを読む