投稿

ラベル(golang)が付いた投稿を表示しています

GinとGolangでPOST API

GinとGolangでPOST API 本記事では、GolangのWebフレームワークGinを用いて、HTTP POST APIを構築する方法を解説します。サンプルAPIの実装を通して、API開発の基礎を学びましょう。 はじめに API(Application Programming Interface)は、異なるソフトウェア同士が連携するためのインターフェースです。HTTP POST APIは、データをサーバーに送信し、処理を実行するための一般的なAPI形式です。Ginは、Golangで高速なWebアプリケーションやAPIを構築するための軽量なフレームワークです。シンプルなAPI開発に適しており、学習コストも低いのが特徴です。 GolangでHTTP POST APIを構築する準備 まず、Golangの開発環境を構築します。Golangの公式サイトから最新版をダウンロードし、インストールしてください。次に、Ginフレームワークをインストールします。ターミナルで以下のコマンドを実行します。 go get -u github.com/gin-gonic/gin これで、Ginを用いたAPI開発の準備が整いました。プロジェクトのディレクトリを作成し、適切なGoモジュールを設定することを推奨します。 HTTP POSTリクエストの受信と処理 Ginフレームワークを使用して、HTTP POSTリクエストを受信するためのルーティングを設定します。以下のコードは、 /api/data エンドポイントでPOSTリクエストを受信し、処理を行う例です。 package main import ( "github.com/gin-gonic/gin...

golang で authorization header bearer token 方式のサンプル

package main import ( "fmt" "net/http" "bytes" ) func main() { // 送信先のURL url := "https://example.com/api/endpoint" // Bearerトークン bearerToken := "your_bearer_token_here" // 送信するJSONデータ jsonData := []byte(`{"key1": "value1", "key2": "value2"}`) // POSTリクエストを作成 request, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData)) if err != nil { fmt.Println("Error creating request:", err) return } // AuthorizationヘッダーにBearerトークンを追加 request.Header.Set("Authorization", "Bearer "+bearerToken) // Content-Typeヘッダーを設定 request.Header.Set("Content-Type", "application/json") // HTTPクライアントを作成してリクエストを送信 client := &http.Client{} response, err := client.Do(request) if err != nil { fmt.Println("Error sending request:", err) return } defer response.Body.Close() // レスポンスの内容を表示 if response.StatusCo...

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) i...

golang の環境別にversion変更したい

VSCodeで開発するなら、 左下に記載されている。Goのversionをクリックすると 切り替える事ができるので、便利だった・・・・ goenvを使わないでできたよ・・・。

【golang】基礎 if 文 順番

golang を利用していて、複数条件の順番が気になったので golangも同じように左側から 順番にやってくれる様子 順番変えると、エラーで落ちます。 どこかの言語のように、 _abc?.A   のような感じにできたりするのかな? それとも、もっと良い書き方があるかもしれない。 func Test0001 (t *testing.T) { type abc struct { A string B string C string } var _abc *abc = nil // 左から順番にチェックされる if _abc != nil && _abc.A == "a" { return // 入らない } var _abc02 abc = abc{} _abc = &_abc02 // 左から順番にチェックされる if _abc != nil && _abc.A == "a" { return // 入らない } var _abc03 abc = abc{A: "a" } _abc = &_abc03 if _abc != nil && _abc.A == "a" { return // OK } }