import requests
def main():
# 送信先のURL
url = "https://example.com/api/endpoint"
# Bearerトークン
bearer_token = "your_bearer_token_here"
# 送信するJSONデータ
data = {
"key1": "value1",
"key2": "value2"
}
# POSTリクエストを送信
response = requests.post(url, json=data, headers={"Authorization": "Bearer " + bearer_token})
# レスポンスの内容を表示
if response.status_code == 200:
print("Success!")
print("Response:", response.json())
else:
print("Error:", response.status_code, response.text)
if __name__ == "__main__":
main()
技術的な知見や日々の記録、日常の些細な変化などを綴る雑記ブログです。専門的な技術解説から日記のようなライトな話題まで、特定のジャンルに縛られず、気になったことや面白いと感じた出来事を幅広く発信しています。筆者の視点で切り取った多様なコンテンツが楽しめる、自由な雑記空間を目指しています。
python で authorization header bearer token 方式のサンプル
Go言語によるBearer認証の実装サンプル
Go言語で実現するBearerトークン認証
モダンなWeb API開発において、セキュリティを確保するための認証方式として「Bearerトークン(主にJWTなど)」は事実上の標準となっています。
Go言語の標準ライブラリ net/http を用いて、この認証ヘッダーを正しく、かつ安全に実装する方法を詳しく解説します。
1. 実装サンプルコード
以下のコードは、JSONデータをPOSTしつつ、AuthorizationヘッダーにBearerトークンを付与する完結したサンプルです。 エラーハンドリングやタイムアウト設定など、実務で必須となる要素を盛り込んでいます。
package main
import (
"bytes"
"fmt"
"io"
"net/http"
"time"
)
func main() {
// 接続先URLと認証トークンの定義
const (
apiURL = "https://example.com/api/v1/resource"
bearerToken = "your_secret_access_token"
)
// 送信するペイロード(JSON)の構築
payload := []byte(`{"name": "Gopher", "role": "Developer"}`)
// 1. リクエストオブジェクトの生成
// http.Post() 等の簡易メソッドではヘッダーの個別設定ができないため、NewRequestを使用します
req, err := http.NewRequest(http.MethodPost, apiURL, bytes.NewBuffer(payload))
if err != nil {
fmt.Printf("リクエストの作成に失敗しました: %v\n", err)
return
}
// 2. 必須ヘッダーの設定
// Bearerの後には必ず半角スペースが必要です
req.Header.Set("Authorization", "Bearer "+bearerToken)
req.Header.Set("Content-Type", "application/json")
// 3. HTTPクライアントの実行
// http.DefaultClient はタイムアウトが設定されていないため、独自のClient定義を強く推奨します
client := &http.Client{
Timeout: 10 * time.Second,
}
resp, err := client.Do(req)
if err != nil {
fmt.Printf("通信エラーが発生しました: %v\n", err)
return
}
// リソースリークを防ぐため、必ずCloseを呼び出す
defer resp.Body.Close()
// 4. 結果の読み取りと判定
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode == http.StatusOK {
fmt.Printf("成功: %s\n", string(body))
} else {
fmt.Printf("サーバーエラー: %d - %s\n", resp.StatusCode, string(body))
}
}
2. 実装上の重要なTips
なぜ http.NewRequest を使うのか?
http.Get や http.Post は内部でデフォルトのクライアントを使用しており、独自のヘッダーを追加する機能がありません。
認証が必要なAPIを叩く場合は、http.NewRequest を使用してリクエストインスタンスを生成し、Header.Set で個別に制御するのが正しいアプローチです。
Bearerスキームの書式に注意
Authorizationヘッダーの値は Bearer <token> という形式で指定する必要があります。
この Bearer とトークンの間の半角スペースを忘れると、サーバー側で正しくパースされず、401 Unauthorizedエラーの原因となります。
プロダクション環境での注意点
- タイムアウト: ネットワークの遅延やサーバーの無応答に備え、必ず
http.Clientにタイムアウトを設定してください。 - トークンの秘匿: トークンをコード内にハードコードせず、環境変数(
os.Getenv)やシークレット管理サービスから取得するようにしましょう。
Python Post Request with Json Example
import requests
import json
def main():
# 送信先のURL
url = "https://example.com/api/endpoint"
# 送信するJSONデータ
data = {
"key1": "value1",
"key2": "value2"
}
# JSONデータを文字列に変換
json_data = json.dumps(data)
# POSTリクエストを送信
response = requests.post(url, data=json_data, headers={"Content-Type": "application/json"})
# レスポンスの内容を表示
if response.status_code == 200:
print("Success!")
print("Response:", response.json())
else:
print("Error:", response.status_code, response.text)
if __name__ == "__main__":
main()
golang でカタカナだけを抽出するサンプル
package main
import (
"fmt"
"regexp"
)
func main() {
// カタカナとひらがなを混ぜた文字列
originalString := "コンニチハセカイ こんにちはせかい"
// 文字列からカタカナのみを抽出
katakanaString := extractKatakana(originalString)
// カタカナのみの文字列を出力
fmt.Println("Katakana String:", katakanaString)
}
// カタカナのみを抽出する関数
func extractKatakana(s string) string {
// 正規表現パターンを定義
// カタカナ文字のUnicode範囲: U+30A0 ~ U+30FF
regexPattern := "[ァ-ヿ]+"
// 正規表現にマッチする部分を抽出
regExp := regexp.MustCompile(regexPattern)
katakanaSlice := regExp.FindAllString(s, -1)
// カタカナの文字列に変換
katakanaString := ""
for _, kana := range katakanaSlice {
katakanaString += kana
}
return katakanaString
}
golang のJson をPostするサンプル
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
// The URL to which you want to send the JSON data
url := "https://example.com/api/endpoint"
// Data to be sent as JSON in the request body
data := map[string]interface{}{
"key1": "value1",
"key2": "value2",
}
// Convert data to JSON format
jsonData, err := json.Marshal(data)
if err != nil {
fmt.Println("Error converting data to JSON:", err)
return
}
// Create a new HTTP request
request, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
fmt.Println("Error creating request:", err)
return
}
// Set the request header to indicate JSON data
request.Header.Set("Content-Type", "application/json")
// Create an HTTP client and send the request
client := &http.Client{}
response, err := client.Do(request)
if err != nil {
fmt.Println("Error sending request:", err)
return
}
defer response.Body.Close()
// Check the response status code
if response.StatusCode != http.StatusOK {
fmt.Println("Unexpected response status code:", response.StatusCode)
return
}
// Read the response body
var responseData map[string]interface{}
err = json.NewDecoder(response.Body).Decode(&responseData)
if err != nil {
fmt.Println("Error decoding response:", err)
return
}
// Process the response data as needed
fmt.Println("Response:", responseData)
}
【Bird】 ポケモンスリープについて聞いてみた。
ポケモンスリープは、2023年7月17日にリリースされたスマートフォン向けゲームアプリです。本作は、スマートフォンもしくは「Pokémon GO Plus+」のセンサーを使ってユーザーの睡眠時間や睡眠の質を計測し、そのデータを使ったゲームを進めることで、楽しみながら睡眠リズムを整えるアプリです。
ゲームの開始時には、ユーザーは自分の睡眠データを入力します。このデータは、スマートフォンの画面をオフにして枕元に置いた「Pokémon GO Plus+」によって収集されます。収集されたデータは、ユーザーの睡眠時間、睡眠の深さ、睡眠の質、睡眠時の動きなどを分析します。
ゲームでは、ユーザーは「Pokémon GO Plus+」を枕元に置いて寝ると、カビゴンが登場します。カビゴンは、ユーザーの睡眠データに基づいて、眠り方や寝相を変化させます。ユーザーは、カビゴンの眠り方や寝相を観察して、自分の睡眠の質を改善することができます。
ゲームでは、ユーザーはカビゴンを育てることができます。カビゴンを育てるためには、ユーザーは睡眠をとる必要があります。睡眠をとると、カビゴンは成長し、新しい技を覚えます。カビゴンを強く育てるためには、ユーザーは質の高い睡眠をとることが大切です。
ポケモンスリープは、睡眠リズムを整えるゲームです。本作は、スマートフォンもしくは「Pokémon GO Plus+」のセンサーを使ってユーザーの睡眠データを収集し、そのデータをゲームに反映します。ユーザーは、ゲームをプレイすることで、自分の睡眠の質を改善することができます。
ポケモンスリープは、睡眠の質を改善したい人、カビゴンを育てたい人、ポケモンをもっと楽しみたい人におすすめのゲーム
【Bird】君たちはどう生きるか ジブリの最新作をネタバレなしで観た感想を1000文字程度にまとめてくださいと聞いてみた。
birdにネタバレなしで感想を聞いてみました。
実際に観た方がこんな感じにおもっているのかなぁ?
----
2023年7月14日に公開されたスタジオジブリの最新作「君たちはどう生きるか」を観てきました。この映画は、生きることの意味について深く考えさせられる作品で、とても印象に残りました。
物語は、ある日、謎の人物から一冊の本をもらった少年・眞人(まこと)の視点から描かれます。その本は、生きることについて様々なことを教えてくれる本で、眞人は、その本を読んで、生きることについて考え始めます。
この映画では、生きることの意味について、様々な角度から考えさせられます。例えば、生きることの意味は何か?生きることの目的は何か?生きることの喜びとは何か?生きることの苦しみとは何か?生きることの美しさとは何か?生きることの悲しみとは何か?
この映画は、これらの問いに対して、一つの答えを出すことはありません。しかし、この映画は、生きることについて考えさせてくれるきっかけを与えてくれる作品です。
この映画を観た後、私は、生きることについて、改めて考えさせられました。生きることの意味は、人それぞれ違うと思います。しかし、生きることの意味は、何か一つに絞る必要はないと思います。生きることの意味は、様々なものから成り立っていると思います。
生きることの意味は、家族や友人との絆かもしれません。生きることの意味は、仕事や趣味かもしれません。生きることの意味は、自然や芸術かもしれません。生きることの意味は、夢や希望かもしれません。
生きることの意味は、人それぞれ違うと思います。しかし、生きることの意味は、何か一つに絞る必要はないと思います。生きることの意味は、様々なものから成り立っていると思います。
この映画は、生きることについて考えさせてくれるきっかけを与えてくれる作品です。この映画を観て、生きることについて、改めて考えてみてはいかがでしょうか。
【Bard】ドコモのプランeximoとirumoの違いを表にまとめて
はい、ドコモのプランeximoとirumoの違いを以下にまとめました。
| 項目 | eximo | irumo |
|---|---|---|
| 月額料金 | 2,970円(税込) | 2,728円(税込) |
| データ容量 | 5GB | 3GB |
| 通話料 | 22円/30秒(国内) | 22円/30秒(国内) |
| かけ放題オプション | 1,100円/月(税込) | 550円/月(税込) |
| 5Gオプション | 550円/月(税込) | 無料 |
| 国際ローミング | 有料 | 有料 |
| ドコモ光セット割 | 最大1,100円/月(税込) | 最大1,050円/月(税込) |
| ドコモオンラインショップ割引 | 最大1,000円/月(税込) | 最大1,000円/月(税込) |
| 家族割引 | 最大2,200円/月(税込) | 最大2,200円/月(税込) |
AWSメモです。
EC2編
- インスタンスはあとから、VPCの設定ができない。
- VPCが無い時代に作成されたインスタンスは、あとからVPCに移動できない。
- t1.microからt2.microにポチッと簡単に移行できない。
- t1.microからt2.microへ移行は、インスタンス作り直して、移行したほうが楽
- t1.microの起動ボタンは何度もトライすべし。(AWSが起動できる総数がだいぶ少なく設定してる)
- VPC内にELBを設定するしかできない。(昔はできた)
- cloudfrontに設定するSSL証明書はバージニア州じゃないとセットできない。
- 東京リージョンでSSL証明書作成しても、cloudfrontにはセットできない。
- ElasticIPはセットしていないと、金が取られる
Route53編
- 自動更新ONだとちょうど一ヶ月に自動更新される
- 意外と、更新費用が高い。
- .jpドメインだと、90ドル (他のところで買ったほうがやすい)
(ワード)
EC2-Classic
PV
HVM
【Bard】2023/05/31に発生した東横線の日吉駅で発生した線路火災で2回も運転見合わせたニュース原稿を書いてもらえますか?
なんか、ちょっとずつ違うな。
---2回目
はい、喜んで。
東急線日吉駅で線路火災、運転見合わせが2回
2023年5月31日、神奈川県横浜市の東急線日吉駅で線路火災が発生し、東横線、目黒線、新横浜線の一部区間で運転見合わせとなりました。
火災は午前8時26分頃、日吉駅の線路内で発生しました。発煙に気づいた駅員が消防に通報し、消防車が出動して消火活動を行いました。火災は午前9時30分頃に鎮火しましたが、線路が損傷したため、東横線は武蔵小杉駅と菊名駅間、目黒線は武蔵小杉駅と日吉駅間、新横浜線は日吉駅と新横浜駅間で運転を見合わせとなりました。
東急電鉄は午前11時5分頃、東横線、目黒線、新横浜線の全線で運転を再開しましたが、午後12時30分頃、再び日吉駅の線路内で発煙が確認されました。このため、東横線、目黒線、新横浜線の全線で運転を見合わせとなりました。
東急電鉄は、運転再開の見通しを明らかにしていません。
この線路火災の影響で、多くの人が通勤や通学に遅れました。
--- 1回目
はい、喜んで。
東横線日吉駅で線路火災、2回運転見合わせ
2023年5月31日、午前8時26分頃、東横線日吉駅で線路火災が発生しました。火災は、線路の切り替えポイントで発生し、すぐに線路全体に広がりました。消防車が駆け付け、約2時間後に鎮火しましたが、線路は焼け焦げ、東横線は運休となりました。
この火災により、約1万人の乗客が影響を受けました。東横線は、午後2時頃に運転を再開しましたが、午後6時頃に再び線路火災が発生し、運転見合わせとなりました。
この火災により、約2万人の乗客が影響を受けました。東横線は、午後10時頃に運転を再開しましたが、復旧には数日かかると見られています。
この火災の原因は、現在のところ、調査中です。消防は、線路の不良や放火の可能性も含めて調べています。
東急電鉄は、再発防止策として、すべての線路の点検を実施するとしています。
---