質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Echo(フレームワーク)

Echoは、Go言語で作られたフレームワーク。非常に軽量で、小~中規模のアプリ構成を想定した仕様になっています。公式ドキュメントが用意されており、初心者でも始めやすい点が特徴です。

SPA(Single-page Application)

SPA(Single-page Application)は、単一のWebページのみでコンテンツの切り替えができるWebアプリケーションもしくはWebサイトです。ブラウザでのページ遷移がないため、デスクトップアプリケーションのようなUXを提供します。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

1440閲覧

SPA(JavaScript フレームワーク + REST API)における認証とURL

akamakku

総合スコア191

Echo(フレームワーク)

Echoは、Go言語で作られたフレームワーク。非常に軽量で、小~中規模のアプリ構成を想定した仕様になっています。公式ドキュメントが用意されており、初心者でも始めやすい点が特徴です。

SPA(Single-page Application)

SPA(Single-page Application)は、単一のWebページのみでコンテンツの切り替えができるWebアプリケーションもしくはWebサイトです。ブラウザでのページ遷移がないため、デスクトップアプリケーションのようなUXを提供します。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/10/24 16:03

前提・実現したいこと

前提の前提: HTTP等ベースの技術はある程度理解しているつもりですが,Webアプリケーション開発に関しては初心者です.

フロントエンドとバックエンド両方の勉強のため,SPAでブログのようなものを作ってみようと思っています.
ただ自分の記事を表示するだけじゃつまらないので,一般的なブログサービスのようにアカウントを作ってCMS的な機能もつけようと思っています

またAPIに関しては,調べているとよくSPAとセットで出てくるので,REST APIでやってみようと思っています.

疑問に思ったこと

セッションについて

一般的なWebアプリではCookieによってセッションが保持され,「認証済み」のような情報もサーバ側で保持されることになると思いますが,
調べたところ,REST APIはステートレスであり,セッションを保持しません.

作りたいもの的に,「あるアカウントは他のアカウントの記事を削除できない」というようなアクセス制御?も必要になります.
こういう場合には認証を行って,その後はトークンなどを用いて,誰からのリクエストかどうかを確認する必要があるのかなと思うのですが,
この場合,「このトークンはこのユーザのもの」という情報はサーバ側で保持していますが,これは(前後のリクエストとの関係等を示すものではないので)セッションには当たらないという理解で正しいでしょうか?

URLについて

リソースに対して一意にURIが紐づくということですが,例えば個別のユーザが/users/<unique id>というURIで表されるとすると,
ユーザが自分の情報を変更する場合,REST APIの決まり?的に行くと

PUT /users/<unique id>

このようにAPIにリクエストを飛ばすことになって,同じ「自分の情報を変更する」という操作に対して,ユーザによって異なるURLへのリクエストが発生することになります.
これは,あくまで自分の感覚では,若干直感的でないかなと思ったのですが,「操作」ではなく「リソース」にたいしてURLが割り当てられているREST APIでは通常のことということでしょうか?

またこの場合,クライアント側ではトークンと,(秘密情報には当たらない)自分のunique idを保持する必要があると思いますが.トークンは秘密情報なのでCookieに保存するとして,unique idは認証の際に受け取るとしてどこに保存しておくものなんでしょうか?localStrage等でしょうか

そもそもユーザの情報を変更するのに以下の様なすべてのユーザが同じURLを使うとすればunique idを保持しておく必要はない気がするのですが,どちらが良いのでしょうか?

PUT /user

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問