プログラミング

RailsでJSONを返すシンプルなWebAPIを作ってみる

備忘録です

 

Ruby on RailsでシンプルなJSONを返すWebAPIを作ってみようと思います。コントローラーに定義したjsonを返すだけのシンプルなapi(本当だったら、dbから取り出したデータとか?)です。下記のようにjsonを定義する。

 

personal = {

"smile face":[
{
"url":"http://localhost:3333/face/smile/smile1.img"
},
{
"url":"http://localhost:3333/face/smile/smile2.img"
}
]
}

 

# 使い方

具体的には`$ curl`コマンドでapiを叩くと、画像のurlを取得できるapiを作ってみようと思います、下記のエンドポイントを指定してcurlを叩くことで、具体的には、笑ってる顔、怒ってる顔、泣いてる顔、の画像のurlを返すapiです。勿論webからもアクセスできますよ。今回はパラメーターなどの指定による、複雑なapi操作はなし。とにかくapiを叩いて結果を受け取る。

 

$ curl -i http://localhost:3333/face/angry
$ curl -i http://localhost:3333/face/sad
$ curl -i http://localhost:3333/face/smile

 

やり方

 

まずは、railsのプロジェクトを作る。

 

$ rails new api-test

 

プロジェクトに移動して

 

$ cd /Users/hujisawa/Desktop/api-test

 

プロジェクトに移動して、コントローラーとビューと、ルートを作る。今回はjsonを返すのでビューはいらないから後で消す。

```
$ generate controller Face smile sad angry
```

実装

 

下記のように記述することで、jsonを返すことができる。renderがわからないければググる。personalは作ってあるjsonデータ。

 

render :json => personal

 

完成

 

class FaceController < ApplicationController def smile personal = { "smile face":[ { "url":"http://localhost:3333/face/smile/smile1.img" }, { "url":"http://localhost:3333/face/smile/smile2.img" } ] } render :json => personal

end

def sad

personal = {

"sad_face":[
{
"url":"http://localhost:3333/face/smile/sad1.img"
},
{
"url":"http://localhost:3333/face/smile/sad2.img"
}
]
}
render :json => personal
end

def angry

personal = {

"angry_face":[
{
"url":"http://localhost:3333/face/smile/angry1.img"
},
{
"url":"http://localhost:3333/face/smile/angry2.img"
}
]
}
render :json => personal

end
end

 

 ビューは消しとこ

 

今回はhtmlを使わないのでこれらは消す。

Screen Shot 2018-09-13 at 15.40.40.png

# ウェブからアクセス

Screen Shot 2018-09-13 at 15.42.04.png

apiを叩く

 

$ curl -i http://localhost:3333/face/smile
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Content-Type: application/json; charset=utf-8
ETag: W/"12078d41e23365917dee4fe08ad8508e"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 764425e8-8ed1-4aa4-a781-b0b98e8b19fd
X-Runtime: 0.005404
Transfer-Encoding: chunked

{"smile face":[{"url":"http://localhost:3333/face/smile/smile1.img"},{"url":"http://localhost:3333/face/smile/smile2.img"}]}f

 

 

# #参考

 

https://www.rubylife.jp/rails/controller/index7.html

Pocket
LinkedIn にシェア

  • この記事を書いた人

藤沢瞭介(Ryosuke Hujisawa)

りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

-プログラミング
-

Copyright© off.tokyo , 2021 All Rights Reserved Powered by AFFINGER5.