Skip to content

✅ Qiita API v2 の JSON スキーマ用 Golang の構造体セット

License

Notifications You must be signed in to change notification settings

Qithub-BOT/sqiima

Repository files navigation

.github/workflows/tests.yml CodeQL codecov Go Report Card Go Reference License: MIT

SQiiMA - JSON schema struct of Qiita API v2 for Go

SQiiMAQiita API v2 を Go 言語(以下 Golang)で扱う際の JSON スキーマ構造の定義を元に Golang の構造体(struct type)に起こしただけのシンプルなライブラリです。

Qiita API へのリクエストおよびレスポンスの JSON データを Marshal / UnmarshalJSON ⇆ Go struct に変換 する際に import して利用ください。

go get

$ go get github.com/Qithub-BOT/sqiima

Usage

import "github.com/Qithub-BOT/sqiima/sqiima"

シンプルな使い方

// Qiita API にリクエストした結果を取得する
// (/api/v2/items エンドポイントは新着記事の JSON オブジェクトを配列で返します)
rawJSON := doSomethingToRequest("/api/v2/items")

// Go の初期化された空のオブジェクト作成
// Items は Item のスライス(可変長配列)です =`[]Item`
items := new(sqiima.Items)

// 空のオブジェクトに生 JSON を割り当て (JSON decode-ish)
if err := json.Unmarshal(rawJSON, item); err != nil {
	log.Fatalf("error to parse JSON: %v", err)
}

// 新着 Qiita 記事一覧のタイトル出力
for _, item := range *items {
	fmt.Println(item.Title)
}

もう少し具体的な使い方

サポートしている JSON スキーマ対応表

JSON 側オブジェクト名 Go 側構造体名(型名) 説明
"item" Item ユーザからの投稿を表します。
"tag" Tag 記事に付けられた個々のタグを表します。
"like" Like 記事につけられた「LGTM!」を表します。Qiita Team の LGTM API は2020年11月4日より廃止となりました。今後は絵文字リアクション API をご利用ください。
"user" User Qiita 上のユーザを表します。
"authenticated_user" AuthenticatedUser 現在のアクセストークンで認証中のユーザを表します。通常のユーザ情報よりも詳細な情報を含んでいます。
"access_token" AccessToken Qiita API v2 で認証・認可を行うためのアクセストークンを表します。
"comment" Comment 記事やプロジェクトに付けられたコメントを表します。プロジェクトへのコメントは Qiita Team でのみ有効です。

Qiita Team でのみ有効な JSON

JSON 側オブジェクト名 Go 側構造体名(型名) 説明
"team" Team Qiita Team 上で所属しているチームを表します。
"group" Group Qiita Team のグループを表します。
"reaction" Reaction Qiita Team 上での絵文字リアクションを表します。
"template" Template 記事のひな形に利用できるテンプレートを表します。
"project" Project Qiita Team 上でのプロジェクトを表します。
"expanded_template" ExpandedTemplate テンプレートを保存する前に変数展開後の状態をプレビューできます。
"team_access_token" TeamAccessToken Qiita API v2 で認証・認可を行うためのチーム別アクセストークンを表します。
"tagging" Tagging 記事とタグとの関連を表します。
"remove_team_member" RemoveTeamMember 指定のユーザーをチームから離脱させます。自身とチームのオーナーはこの API では離脱させられません。
"team_invitation" TeamInvitation Qiita Teamでの招待中のメンバーを表します。管理者権限が必要です。

Note/備考

  • このリポジトリは GitHub Codespaces に対応しています。

ライセンス