{"id":37978,"date":"2024-07-11T05:22:36","date_gmt":"2024-07-11T05:22:36","guid":{"rendered":"https:\/\/www.railscarma.com\/?p=37978"},"modified":"2024-07-11T05:22:40","modified_gmt":"2024-07-11T05:22:40","slug":"ruby-on-rails%e3%81%a7grape%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9frestful%e3%81%aaapi%e3%81%ae%e6%a7%8b%e7%af%89","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/ruby-on-rails%e3%81%a7grape%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9frestful%e3%81%aaapi%e3%81%ae%e6%a7%8b%e7%af%89\/","title":{"rendered":"Ruby on Rails\u3067Grape\u3092\u4f7f\u3063\u3066RESTful API\u3092\u69cb\u7bc9\u3059\u308b"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"37978\" class=\"elementor elementor-37978\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-047c76d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"047c76d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-df36e46\" data-id=\"df36e46\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3ba2006 elementor-widget elementor-widget-text-editor\" data-id=\"3ba2006\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Web\u958b\u767a\u306e\u9818\u57df\u3067\u306f\u3001RESTful API\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u4e00\u822c\u7684\u306b\u5fc5\u8981\u306a\u3053\u3068\u3060\u3002RESTful API\u306f\u3001\u7570\u306a\u308b\u30b7\u30b9\u30c6\u30e0\u304c\u6a19\u6e96\u5316\u3055\u308c\u305f\u65b9\u6cd5\u3067HTTP\u3092\u4ecb\u3057\u3066\u901a\u4fe1\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u3001\u6700\u65b0\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u4e0d\u53ef\u6b20\u306a\u3082\u306e\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002Ruby on Rails\uff08RoR\uff09\u306fWeb\u958b\u767a\u306e\u305f\u3081\u306e\u5805\u7262\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u3001API\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306e\u30de\u30a4\u30af\u30ed\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308bGrape\u304c\u52a0\u308f\u3063\u305f\u3053\u3068\u3067\u3001RESTful API\u306e\u69cb\u7bc9\u306f\u3055\u3089\u306b\u5408\u7406\u7684\u304b\u3064\u52b9\u7387\u7684\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Ruby on Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067Grape\u3092\u4f7f\u7528\u3057\u3066RESTful API\u3092\u69cb\u7bc9\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3092\u3001\u4f8b\u3092\u4ea4\u3048\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/span><\/p>\n<h2><b>\u30b0\u30ec\u30fc\u30d7\u3068\u306f\uff1f<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Grape\u306f\u3001REST\u30e9\u30a4\u30af\u306aAPI\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u7279\u5225\u306b\u8a2d\u8a08\u3055\u308c\u305fRuby\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308b\u3002\u8efd\u91cf\u3067Rails\u3092\u3046\u307e\u304f\u88dc\u5b8c\u3057\u3001RESTful API\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u30b7\u30f3\u30d7\u30eb\u306aDSL\uff08\u30c9\u30e1\u30a4\u30f3\u56fa\u6709\u8a00\u8a9e\uff09\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002Grape\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u691c\u8a3c\u3001\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306a\u3069\u306e\u4e00\u822c\u7684\u306a\u30bf\u30b9\u30af\u3092\u51e6\u7406\u3057\u306a\u304c\u3089\u3001API\u30ed\u30b8\u30c3\u30af\u306b\u96c6\u4e2d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/span><\/p>\n<h2><b>Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067Grape\u3092\u8a2d\u5b9a\u3059\u308b<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\u59cb\u3081\u308b\u306b\u306f\u3001Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5fc5\u8981\u3067\u3059\u3002\u307e\u3060\u304a\u6301\u3061\u3067\u306a\u3044\u5834\u5408\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u3057\u3066\u65b0\u3057\u3044Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\uff1a<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">rails new grape_api_example<br><\/span><span style=\"font-weight: 400;\">cd grape_api_example<\/span><\/pre>\n<p style=\"font-size: 16px; font-style: normal;\"><span style=\"font-weight: 400; font-size: 16px;\">\u30b0\u30ec\u30fc\u30d7\u306e\u5b9d\u77f3\u3092 <\/span><span style=\"font-size: 16px;\"><b>\u30b8\u30a7\u30e0\u30d5\u30a1\u30a4\u30eb<\/b><\/span><span style=\"font-size: 16px;\"><b>:<\/b><br><\/span><\/p>\n<p><\/p>\n<pre><span style=\"font-size: 16px; font-weight: 400; color: var( --e-global-color-text );\">\u30b8\u30a7\u30e0\u300c\u30b0\u30ec\u30fc\u30d7<\/span><\/pre>\n<p><\/p>\n<p><span style=\"font-weight: 400;\">\u8d70\u308b <\/span><b>\u30d0\u30f3\u30c9\u30eb\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/b><span style=\"font-weight: 400;\"> \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/span><\/p>\n<h2><b>API\u306e\u4f5c\u6210<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\u306e\u4e0b\u306bAPI\u7528\u306e\u65b0\u3057\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 <\/span><b>\u30a2\u30d7\u30ea<\/b><span style=\"font-weight: 400;\">:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">mkdir app\/api<\/span><\/pre>\n<p><\/p>\n<p><span style=\"font-weight: 400;\">\u6b21\u306b\u3001API\u306e\u57fa\u672c\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3002\u3053\u306e\u30af\u30e9\u30b9\u306f <\/span><b>\u30b0\u30ec\u30fc\u30d7::API<\/b><span style=\"font-weight: 400;\"> \u3092\u4f5c\u6210\u3057\u3001\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u57fa\u790e\u3068\u3057\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210 <\/span><b>app\/api\/base_api.rb<\/b><span style=\"font-weight: 400;\"> \u305d\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3059\u308b\uff1a<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">\u30e2\u30b8\u30e5\u30fc\u30ebAPI<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;\u30af\u30e9\u30b9 Base &lt; Grape::API<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;&nbsp;&nbsp;\u30d5\u30a9\u30fc\u30de\u30c3\u30c8 :json<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;&nbsp;&nbsp;rescue_from :all do |e|.<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_response(message: e.message, status: 500)<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;&nbsp;&nbsp;\u7d42\u308f\u308a<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;&nbsp;&nbsp;\u30de\u30a6\u30f3\u30c8 API::V1::Base<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;\u7d42\u308f\u308a<br><\/span><span style=\"font-weight: 400;\">\u7d42\u308f\u308a<\/span><\/pre>\n<p><\/p>\n<h2><b>API\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306f\u3001\u5f8c\u65b9\u4e92\u63db\u6027\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u306b\u975e\u5e38\u306b\u91cd\u8981\u3067\u3042\u308b\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001API\u306e\u30d0\u30fc\u30b8\u30e7\u30f31\u3092\u4f5c\u6210\u3059\u308b\u3002\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3059\u308b\u3002 <\/span><b>app\/api\/v1<\/b><span style=\"font-weight: 400;\"> \u3068\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb <\/span><b>app\/api\/v1\/base.rb<\/b><span style=\"font-weight: 400;\">:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">\u30e2\u30b8\u30e5\u30fc\u30ebAPI<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;\u30e2\u30b8\u30e5\u30fc\u30eb V1<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;&nbsp;&nbsp;\u30af\u30e9\u30b9 Base &lt; Grape::API<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u30d0\u30fc\u30b8\u30e7\u30f3 'v1', using: :path<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u30de\u30a6\u30f3\u30c8 API::V1::Users<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;&nbsp;&nbsp;\u7d42\u308f\u308a<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;\u7d42\u308f\u308a<br><\/span><span style=\"font-weight: 400;\">\u7d42\u308f\u308a<\/span><\/pre>\n<p><\/p>\n<h3><b>\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u5b9a\u7fa9<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">\u30e6\u30fc\u30b6\u30fc\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u4f5c\u3063\u3066\u307f\u3088\u3046\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b <\/span><b>app\/api\/v1\/users.rb<\/b><span style=\"font-weight: 400;\">:<\/span><\/p>\n<pre>\u30e2\u30b8\u30e5\u30fc\u30ebAPI\n  \u30e2\u30b8\u30e5\u30fc\u30eb V1\n    class Users &lt; Grape::API\n      \u30ea\u30bd\u30fc\u30b9 :users do\n        desc &#039;\u30e6\u30fc\u30b6\u30fc\u306e\u30ea\u30b9\u30c8\u3092\u8fd4\u3059\n        get do\n          User.all\n        \u7d42\u4e86\n\n        desc &#039;\u7279\u5b9a\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u8fd4\u3059\n        params do\n          requires :id, type\uff1a\u6574\u6570\u3001desc: &#039;\u30e6\u30fc\u30b6\u30fcID&#039;\n        \u7d42\u4e86\n        route_param :id do\n          get do\n            User.find(params[:id])\n          end\n        \u7d42\u4e86\n\n        desc &#039;\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3059\u308b\n        params do\n          requires :name, type\uff1astring, desc: &#039;\u30e6\u30fc\u30b6\u30fc\u540d&#039;\n          requires :email, type\uff1astring, desc: &#039;\u30e6\u30fc\u30b6\u30fc\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9&#039;\n        \u7d42\u4e86\n        post do\n          User.create!\n            name: params[:name]\u3001\n            email: params[:email]\n          })\n        \u7d42\u4e86\n\n        desc &#039;\u30e6\u30fc\u30b6\u30fc\u3092\u66f4\u65b0\u3059\u308b\n        params do\n          requires :id, type\uff1a\u6574\u6570\u3001desc: &#039;\u30e6\u30fc\u30b6\u30fcID&#039;\n          requires :name, type\uff1astring, desc: &#039;\u30e6\u30fc\u30b6\u30fc\u540d&#039;\n          requires :email, type\uff1astring, desc: &#039;\u30e6\u30fc\u30b6\u30fc\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9&#039;\n        \u7d42\u4e86\n        put &#039;:id&#039; do\n          user = User.find(params[:id])\n          user.update({\n            name: params[:name]\u3001\n            email: params[:email]\n          })\n        \u7d42\u4e86\n\n        desc &#039;\u30e6\u30fc\u30b6\u30fc\u3092\u524a\u9664\u3059\u308b\n        params do\n          requires :id, type\uff1a\u6574\u6570\u3001desc: &#039;\u30e6\u30fc\u30b6\u30fcID&#039;\n        \u7d42\u4e86\n        delete &#039;:id&#039; do\n          User.find(params[:id]).destroy\n        end\n      end\n    end\n  end\n\u7d42\u4e86\n<\/pre>\n<p><b style=\"color: rgb(51, 51, 51); font-size: 1.5625rem; font-style: inherit;\">API\u306e\u30de\u30a6\u30f3\u30c8<\/b><\/p>\n<p><span style=\"font-weight: 400;\">API\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u306b\u306f <\/span><b>config\/routes.rb\uff1a<\/b><\/p>\n<pre><span style=\"font-weight: 400;\">Rails.application.routes.draw \u306f\u5b9f\u884c\u3057\u307e\u3059<br><\/span><span style=\"font-weight: 400;\">&nbsp;&nbsp;\u30de\u30a6\u30f3\u30c8 API::Base =&gt; '\/'<br><\/span><span style=\"font-weight: 400;\">\u7d42\u308f\u308a<\/span><\/pre>\n<p><\/p>\n<h3><b>\u30e6\u30fc\u30b6\u30fc\u30e2\u30c7\u30eb\u306e\u4f5c\u6210<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u30e2\u30c7\u30eb\u3092\u751f\u6210\u3057\u307e\u3059\uff1a<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">\u30e6\u30fc\u30b6\u30fc\u540d:\u6587\u5b57\u5217 \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9:\u6587\u5b57\u5217<br><\/span><span style=\"font-weight: 400;\">Rails \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9:\u79fb\u884c<\/span><\/pre>\n<p><\/p>\n<h3><b>API\u306e\u30c6\u30b9\u30c8<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Rails\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3057\u307e\u3059\uff1a<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">\u30ec\u30fc\u30eb\u30b5\u30fc\u30d0\u30fc<\/span><\/pre>\n<p><\/p>\n<p><span style=\"font-weight: 400;\">\u306e\u3088\u3046\u306a\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066API\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u30c6\u30b9\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002 <\/span><span style=\"font-weight: 400;\">\u30ab\u30fc\u30eb<\/span><span style=\"font-weight: 400;\"> \u307e\u305f\u306fPostman\u3092\u4f7f\u3046\u3002\u4ee5\u4e0b\u306f\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u4f8b\u3067\u3042\u308b\uff1a<\/span><\/p>\n<p><b>\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u53d6\u5f97\u3059\u308b\uff1a<\/b><span style=\"font-weight: 400;\"><br><\/span><\/p>\n<pre><span style=\"font-weight: 400;\">curl http:\/\/localhost:3000\/v1\/users<\/span><\/pre>\n<p><\/p>\n<p><b>\u7279\u5b9a\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u53d6\u5f97\u3057\u307e\u3059\uff1a<\/b><span style=\"font-weight: 400;\"><br><\/span><\/p>\n<pre><span style=\"font-weight: 400;\">curl http:\/\/localhost:3000\/v1\/users\/1<\/span><\/pre>\n<p><\/p>\n<p><b>\u65b0\u898f\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3059\u308b\uff1a<\/b><span style=\"font-weight: 400;\"><br><\/span><\/p>\n<pre><span style=\"font-weight: 400;\">curl -X POST http:\/\/localhost:3000\/v1\/users -d \"name=John Doe&amp;email=johndoe@example.com\"<\/span><\/pre>\n<p><b>\u30e6\u30fc\u30b6\u30fc\u3092\u66f4\u65b0\u3057\u307e\u3059\uff1a<\/b><span style=\"font-weight: 400;\"><br><\/span><\/p>\n<pre><span style=\"font-weight: 400;\">curl -X PUT http:\/\/localhost:3000\/v1\/users\/1 -d \"name=Jane Doe&amp;email=janedoe@example.com\"<\/span><\/pre>\n<p><\/p>\n<p><b>\u30e6\u30fc\u30b6\u30fc\u3092\u524a\u9664\u3057\u307e\u3059\uff1a<\/b><span style=\"font-weight: 400;\"><br><\/span><\/p>\n<pre><span style=\"font-weight: 400;\">curl -X DELETE http:\/\/localhost:3000\/v1\/users\/1<\/span><\/pre>\n<p><\/p>\n<h2><b>\u7d50\u8ad6<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Grape\u3068Ruby on Rails\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001RESTful API\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u7d44\u307f\u5408\u308f\u305b\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002Grape\u306e\u8efd\u91cf\u304b\u3064\u67d4\u8edf\u306a\u6027\u8cea\u306b\u3088\u308a\u3001API\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u5b9a\u7fa9\u3068\u7ba1\u7406\u304c\u5bb9\u6613\u306b\u306a\u308a\u3001Rails\u306f\u57fa\u76e4\u3068\u306a\u308b\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u7ba1\u7406\u306e\u305f\u3081\u306e\u57fa\u672c\u7684\u306aCRUD API\u3092\u5b9f\u6f14\u3057\u3001Grape\u3092Ruby on Rails\u306e\u4e2d\u3067\u3069\u306e\u3088\u3046\u306b\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u3066\u4f7f\u7528\u3059\u308b\u304b\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002 <a href=\"https:\/\/www.railscarma.com\/ja\/%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e3%83%ac%e3%83%bc%e3%83%ab%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e9%96%8b%e7%99%ba\/\">Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3<\/a>.\u3053\u306e\u57fa\u76e4\u304c\u3042\u308c\u3070\u3001API\u3092\u62e1\u5f35\u3057\u3066\u3088\u308a\u8907\u96d1\u306a\u6a5f\u80fd\u3092\u8ffd\u52a0\u3057\u305f\u308a\u3001\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u7d71\u5408\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">\u95a2\u9023\u8a18\u4e8b<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"MLOps\u306e\u305f\u3081\u306eRuby on Rails: ML\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u5b8c\u5168\u30ac\u30a4\u30c9\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/ruby-on-rails-for-mlops-ml%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%83%a1%e3%83%b3%e3%83%88%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89\/?related_post_from=41350\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps.png\" class=\"attachment-full size-full wp-post-image\" alt=\"MLOps\u306e\u305f\u3081\u306eRuby on Rails\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps-768x288.png 768w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps-18x7.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"MLOps\u306e\u305f\u3081\u306eRuby on Rails: ML\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u5b8c\u5168\u30ac\u30a4\u30c9\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/ruby-on-rails-for-mlops-ml%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%83%a1%e3%83%b3%e3%83%88%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89\/?related_post_from=41350\">\r\n        MLOps\u306e\u305f\u3081\u306eRuby on Rails: ML\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u5b8c\u5168\u30ac\u30a4\u30c9  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby on Rails\u3067\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u578bAI\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/building-agentic-ai-applications-with-ruby-on-rails\/?related_post_from=41339\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails.png\" class=\"attachment-full size-full wp-post-image\" alt=\"Ruby on Rails\u306b\u3088\u308b\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u578bAI\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails-768x288.png 768w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails-18x7.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby on Rails\u3067\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u578bAI\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/building-agentic-ai-applications-with-ruby-on-rails\/?related_post_from=41339\">\r\n        Ruby on Rails\u3067\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u578bAI\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Offliberty Ruby Gem\u3068\u306f\uff1f\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/what-is-offliberty-ruby-gem-and-how-it-works\/?related_post_from=41304\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works.png\" class=\"attachment-full size-full wp-post-image\" alt=\"\u30aa\u30d5\u30ea\u30d0\u30c6\u30a3\u30fb\u30eb\u30d3\u30fc\u30fb\u30b8\u30a7\u30e0\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works-768x288.png 768w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works-18x7.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Offliberty Ruby Gem\u3068\u306f\uff1f\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/what-is-offliberty-ruby-gem-and-how-it-works\/?related_post_from=41304\">\r\n        Offliberty Ruby Gem\u3068\u306f\uff1f  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby on Rails\u3092\u4f7f\u3063\u3066\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306aSaaS\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u69cb\u7bc9\u3059\u308b\u65b9\u6cd5\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/how-to-build-a-scalable-saas-platform-using-ruby-on-rails\/?related_post_from=41273\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails.png\" class=\"attachment-full size-full wp-post-image\" alt=\"Ruby on Rails\u3092\u4f7f\u3063\u3066SaaS\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u69cb\u7bc9\u3059\u308b\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails-768x288.png 768w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails-18x7.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby on Rails\u3092\u4f7f\u3063\u3066\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306aSaaS\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u69cb\u7bc9\u3059\u308b\u65b9\u6cd5\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/how-to-build-a-scalable-saas-platform-using-ruby-on-rails\/?related_post_from=41273\">\r\n        Ruby on Rails\u3092\u4f7f\u3063\u3066\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306aSaaS\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u69cb\u7bc9\u3059\u308b\u65b9\u6cd5  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>In the realm of web development, creating RESTful APIs is a common necessity. RESTful APIs allow different systems to communicate over HTTP in a standardized way, making them integral to modern web applications. Ruby on Rails (RoR) provides a robust framework for web development, and with the addition of Grape, a micro-framework for creating APIs, building a RESTful API becomes even more streamlined and efficient. This article will guide you through the process of building a RESTful API using Grape in a Ruby on Rails application, complete with an example. What is Grape? Grape is a Ruby framework specifically designed for creating REST-like APIs. It is lightweight and complements Rails &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/how-to-build-a-scalable-saas-platform-using-ruby-on-rails\/\"> <span class=\"screen-reader-text\">Ruby on Rails\u3092\u4f7f\u3063\u3066\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306aSaaS\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u69cb\u7bc9\u3059\u308b\u65b9\u6cd5<\/span> \u3082\u3063\u3068\u8aad\u3080 \"<\/a><\/p>","protected":false},"author":5,"featured_media":37987,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1224],"tags":[],"class_list":["post-37978","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Building a RESTful API Using Grape in Ruby on Rails - RailsCarma<\/title>\n<meta name=\"description\" content=\"This article will guide you through the process of building a RESTful API using Grape in a Ruby on Rails application with an example.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/ja\/\u30d6\u30ed\u30b0\/ruby-on-rails\u3067grape\u3092\u4f7f\u3063\u305frestful\u306aapi\u306e\u69cb\u7bc9\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building a RESTful API Using Grape in Ruby on Rails - RailsCarma\" \/>\n<meta property=\"og:description\" content=\"This article will guide you through the process of building a RESTful API using Grape in a Ruby on Rails application with an example.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/ja\/\u30d6\u30ed\u30b0\/ruby-on-rails\u3067grape\u3092\u4f7f\u3063\u305frestful\u306aapi\u306e\u69cb\u7bc9\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-11T05:22:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-11T05:22:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nikhil\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nikhil\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/\"},\"author\":{\"name\":\"Nikhil\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/1aa0357392b349082303e8222c35c30c\"},\"headline\":\"Building a RESTful API Using Grape in Ruby on Rails\",\"datePublished\":\"2024-07-11T05:22:36+00:00\",\"dateModified\":\"2024-07-11T05:22:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/\"},\"wordCount\":445,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png\",\"articleSection\":[\"Blogs\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/\",\"name\":\"Building a RESTful API Using Grape in Ruby on Rails - RailsCarma\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png\",\"datePublished\":\"2024-07-11T05:22:36+00:00\",\"dateModified\":\"2024-07-11T05:22:40+00:00\",\"description\":\"This article will guide you through the process of building a RESTful API using Grape in a Ruby on Rails application with an example.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png\",\"width\":800,\"height\":300,\"caption\":\"Building a RESTful API Using Grape in Ruby on Rails\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building a RESTful API Using Grape in Ruby on Rails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/1aa0357392b349082303e8222c35c30c\",\"name\":\"Nikhil\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/054f31ff35e9917aaf631b8025ef679d42dd21792012d451763138d66d02a4c0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/054f31ff35e9917aaf631b8025ef679d42dd21792012d451763138d66d02a4c0?s=96&d=mm&r=g\",\"caption\":\"Nikhil\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ruby on Rails\u3067Grape\u3092\u4f7f\u3063\u3066RESTful API\u3092\u69cb\u7bc9\u3059\u308b - RailsCarma","description":"\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Ruby on Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067Grape\u3092\u4f7f\u3063\u3066RESTful API\u3092\u69cb\u7bc9\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3092\u3001\u4f8b\u3092\u6319\u3052\u3066\u8aac\u660e\u3057\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.railscarma.com\/ja\/\u30d6\u30ed\u30b0\/ruby-on-rails\u3067grape\u3092\u4f7f\u3063\u305frestful\u306aapi\u306e\u69cb\u7bc9\/","og_locale":"ja_JP","og_type":"article","og_title":"Building a RESTful API Using Grape in Ruby on Rails - RailsCarma","og_description":"This article will guide you through the process of building a RESTful API using Grape in a Ruby on Rails application with an example.","og_url":"https:\/\/www.railscarma.com\/ja\/\u30d6\u30ed\u30b0\/ruby-on-rails\u3067grape\u3092\u4f7f\u3063\u305frestful\u306aapi\u306e\u69cb\u7bc9\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2024-07-11T05:22:36+00:00","article_modified_time":"2024-07-11T05:22:40+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png","type":"image\/png"}],"author":"Nikhil","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"\u57f7\u7b46\u8005":"Nikhil","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"3\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/"},"author":{"name":"Nikhil","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/1aa0357392b349082303e8222c35c30c"},"headline":"Building a RESTful API Using Grape in Ruby on Rails","datePublished":"2024-07-11T05:22:36+00:00","dateModified":"2024-07-11T05:22:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/"},"wordCount":445,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png","articleSection":["Blogs"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/","url":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/","name":"Ruby on Rails\u3067Grape\u3092\u4f7f\u3063\u3066RESTful API\u3092\u69cb\u7bc9\u3059\u308b - RailsCarma","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png","datePublished":"2024-07-11T05:22:36+00:00","dateModified":"2024-07-11T05:22:40+00:00","description":"\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Ruby on Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067Grape\u3092\u4f7f\u3063\u3066RESTful API\u3092\u69cb\u7bc9\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3092\u3001\u4f8b\u3092\u6319\u3052\u3066\u8aac\u660e\u3057\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/07\/Building-a-RESTful-API-Using-Grape-in-Ruby-on-Rails.png","width":800,"height":300,"caption":"Building a RESTful API Using Grape in Ruby on Rails"},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/building-a-restful-api-using-grape-in-ruby-on-rails\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"Building a RESTful API Using Grape in Ruby on Rails"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - \u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u306b\u7279\u5316\u3057\u305f Ruby on Rails \u958b\u767a\u4f1a\u793e","description":"RailsCarma \u306f\u30d0\u30f3\u30ac\u30ed\u30fc\u30eb\u306e Ruby on Rails \u958b\u767a\u4f1a\u793e\u3067\u3059\u3002\u5f53\u793e\u306f\u7c73\u56fd\u3068\u30a4\u30f3\u30c9\u3092\u62e0\u70b9\u3068\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2 Ruby on Rails \u958b\u767a\u3092\u5c02\u9580\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u7d4c\u9a13\u8c4a\u5bcc\u306a Ruby on Rails \u958b\u767a\u8005\u3092\u96c7\u3063\u3066\u3001\u7a76\u6975\u306e Web \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u5b9f\u73fe\u3057\u307e\u3057\u3087\u3046\u3002","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"\u30ec\u30fc\u30eb\u30ab\u30fc\u30de","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/1aa0357392b349082303e8222c35c30c","name":"\u30cb\u30ad\u30eb","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/054f31ff35e9917aaf631b8025ef679d42dd21792012d451763138d66d02a4c0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/054f31ff35e9917aaf631b8025ef679d42dd21792012d451763138d66d02a4c0?s=96&d=mm&r=g","caption":"Nikhil"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/posts\/37978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/comments?post=37978"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/posts\/37978\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/media\/37987"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/media?parent=37978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/categories?post=37978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/tags?post=37978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}