Golang

APIサーバを作ってみた: Pocketの記事をアーカイブするよ

  • POST
GolangでPocketの記事をアーカイブするAPIサーバを作ってみました。 困っていたこと 通勤中などにiPhoneで読んでいて気になった記事は、一度Pocketに ブックマークすることにしています。その後は、Workflowを用いて色々と行なっています。 ここで困ったことに気づきました。その色々行なった後にPocketに登録した記事をアーカイブしたいのですが、WorkflowからはPocketの記事をアーカイブできませんでした。。。 ただ、Workflowからは任意のHTTPリクエストを送信できることに気づいたので、簡単なAPIサーバを立てて、Pocketの記事をアーカイブすることとしました。 検討したこと 色々と検討したことのまとめです。 言語選定 お仕事柄色々なOSに触る機会があるので、お手軽に各種OSのバイナリが生成できるGolangで作成して、習熟することにしました。 ライブラリ ウェブサーバのライブラリには、ginを使って見ることにしました。こちらはお仕事で、HTTPリクエストを受け取るためのモックWebサーバを立てる時にお世話になったので。 また、Pocket用のライブラリは、go-pocketを使うこととしました。 書いてみた とりあえず書いてみます!APIサーバは、2つの部分からなります: HTTPリクエストを受け付ける、ウェブサーバの部分 HTTPリクエストに応じて、実際の処理を行う部分 ひとつずつ進めていきます: ウェブサーバ部分 ウェブサーバ部分はginを用いているので、こんな感じで書けるみたいです: package main import ( "os" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() // http://localhost:8080/delete で HTTP POSTリクエストを受け付けるよ r.POST("/archive", func(c *gin.Context) { // POSTリクエストに付随するフォームデータからデータを取得するよ auth := c.PostForm("auth") // authからデータ取得 url := c.PostForm("url") // urlからデータ取得 // authで送られてきたデータが”password”だったら if auth == "password" { // レスポンスとしてステータスコード200とJSONを返す c.JSON(200, gin.H{ "auth": auth, "url": url, }) // authが”password”でなければ } else { // ステータスコード401を返すよ c.