プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Webサービス開発
  • 【Web開発】「REST-API(RESTful)」とは?
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Web開発】「REST-API(RESTful)」とは?

07.15

  • miyabisan2
  • 6件のコメント

この記事は2分で読めます

REST-API(RESTful)とは?

Webで外部呼出しの方式の一つで、例えばRuby on Railsでルーティングを定義する場合に現在は知っていて当たり前の設計思想になっています。

リソースとは?

RESTful-APIではリソースという概念が出てきますが、実体は主にデータベースに保存されているデータのことです。

REST-APIの設計思想

セッション等で状態管理は行わず、やり取りされる情報は、それ自体で完結していること。

RESTでは、「状態」を持ちません。

なので、SNS等の多くのアクセスが予想されるサービスの開発に向いています。

URLの決定単位は、リソース単位

RESTではないアプリの場合は、登録、更新、削除等の処理単位でURLが決まります。

ただ、REST-APIの場合は処理単位でURLが決まるのではなく、リソース(ネットワーク上のコンテンツ)単位でURLが決まります。リソースに対するCRUD操作はすべてHTTPメソッドで表現をします。

リソースへの操作表現がHTTPメソッドとして統一されている。

操作表現を統一するために一般的なブラウザがサポートしているGET/POSTだけでなくPATCH、PUT、DELETEと言ったHTTPメソッドをサポートしています。

HTTPメソッド

メソッド名 処理
GET 取得
POST 登録
PATCH 更新
PUT 更新
DELETE 削除

GET

  • 検索処理
  • 情報の取得
  • ダウンロード処理
  • 一覧表示処理

POST(PUT)

  • データ作成、追加処理
  • 画像のアップロード処理
  • SNSでのステータスの共有処理

また、POSTメソッドは適したメソッドがない場合に使われるデフォルトのメソッドでもあります。(例えば、ショッピングカートのチェックアウト処理等)

PATCH/PUT

  • 情報更新処理(ステータス変更処理)
  • 商品交換処理

DELETE

  • 情報の削除処理
  • 商品のキャンセル処理
  • クローズ処理
  • タイマーの停止処理

REST-APIのメリット、デメリット

メリット

  • ステートレスな通信なので、アクセス集中に耐えやすい。(SNS開発によく使われています。)

デメリット

  • 従来のプログラミング言語ではステートレス指向ではないので、ソースコードが簡潔にはなりにくい。

どの程度RESTを追求するべきか。

リソースの階層が浅い場合はそれほど苦労なくRESTは実装することが可能です。しかし、リソースの階層が深くなっていくとRESTの実装が大変になっていきます。なので、現実的にはRESTの原則を理解しつつRailsで実装しやすい範囲で実現するのが良いでしょう。

実装について

GETやPOST等のHTTPメソッドを送信したから自動でリソースを良きようにRESTが更新してくれるというわけではなく各HTTPメソッドによってどのような処理を行わせるのかはプログラマーの実装によって行われます。RESTはあくまで設計における概念的な物というような認識が必要になります。

スポンサーリンク
  • 2018 07.15
  • miyabisan2
  • 6件のコメント
  • Ruby on Rails, Webサービス開発
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 12.01

    【Rspec】基本的な書き方、タグなど

  2. 2019 12.05

    【Ruby on Rails】「Action Mailer」について

  3. 2019 12.09

    【Web開発】「子画面」について

  4. 2020 12.19

    【Ruby on Rails】「外部キー」の設定のされ方

  5. 2019 11.27

    【Ruby on Rails】テンプレートエンジンの種類(ERB,Haml,Slim)

  6. 2020 11.17

    【Ruby on Rails】「Enum」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Vue.js】「Vue CLI」の基礎知識

【Web開発】「polyfill(ポリフィル)」とは?…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー