技術ログ

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 にシェア

エンジニアにおすすめできる本

Card image cap
リーダブルコード

より良いコードを書くためのシンプルで実践的なテクニック

Card image cap
Webを支える技術

HTTP,URI,HTML,そしてREST

Card image cap
誰でもPythonで作れる

儲かるAIとソフトウェアの作り方

Card image cap
プログラマが知るべき97のこと

現場で使える実践哲学のマスターピース

Card image cap
情熱プログラマー

時代を超えて。ソフトウェア開発者の幸せな生き方

Card image cap
アジャイルサムライ

プログラミング達人開発者への道

Card image cap
Rubyを作った男 まつもとゆきひろ

コードの世界 スーパー・プログラマになる14の思考法

ご提供 sponsor
 

Meee!(ミー)は、ビジネスからプライベート利用まで、個人のスキルを気軽に売り買いできるスキルマーケットです。カテゴリや居住地から、検索することが可能です。

 

ランゲージエクスチェンジは、ネイティブスピーカーと気軽にマッチングできる言語交換プラットフォームです。あなたの地元に住む外国人を探したり、留学や海外移住の前に、現地のネイティブスピーカーと繋がることもできます!

宣伝
 

りょすけトークchは、仕事や私生活をより豊にするYouTubeチャンネルです。文献(本、映画、論文)から役に立つ情報をまとめ、生涯にわたり役に立つ哲学をお届けしています。是非、チャンネル登録してみてね

-技術ログ
-

Copyright© offブログ! , 2021 All Rights Reserved Powered by AFFINGER5.