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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ionic

Ionicは、クロスプラットフォームに対応したモバイルアプリ開発のためのオープンソースUIフレームワークです。iOSやAndroid、Webのアプリケーションを1つのコードベースで開発できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2509閲覧

Laravelの405エラーが解決できない

dauto

総合スコア38

Ionic

Ionicは、クロスプラットフォームに対応したモバイルアプリ開発のためのオープンソースUIフレームワークです。iOSやAndroid、Webのアプリケーションを1つのコードベースで開発できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/06/21 11:17

編集2019/06/22 05:34

現在ionicとLaravelを使用してHTTP通信を使おうとしているのですが、Laravel側のルートで

Laravel

1Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 2The GET method is not supported for this route. Supported methods: POST.

というエラーが表示され、送信することが出来ません。
/routes/api.php の内容を修正するらしいことは分かったのですが、どのように修正すればいいのでしょうか。

api.php

php

1<?php 2 3use Illuminate\Http\Request; 4 5Route::group([ 6 'prefix' => 'auth' 7], function () { 8 Route::post('login', 'Auth\AuthController@login')->name('login'); 9 Route::post('register', 'Auth\AuthController@register'); 10 Route::group([ 11 'middleware' => 'auth:api' 12 ], function() { 13 Route::get('logout', 'Auth\AuthController@logout'); 14 Route::get('user', 'Auth\AuthController@user'); 15 }); 16});

追記

ionicのリクエストを送っているコードです。
(現在ioonicではこちらの質問にあるように422エラーが出ています。)
コードはこちらの記事こちらの記事を参考に作成しました。

TypeScript

1import { HttpClient, HttpHeaders } from '@angular/common/http'; 2import { Injectable } from '@angular/core'; 3import { tap } from 'rxjs/operators'; 4import { NativeStorage } from '@ionic-native/native-storage/ngx'; 5import { EnvService } from './env.service'; 6import { User } from '../models/user'; 7@Injectable({ 8 providedIn: 'root' 9}) 10export class AuthService { 11 isLoggedIn = false; 12 token:any; 13 constructor( 14 private http: HttpClient, 15 private storage: NativeStorage, 16 private env: EnvService, 17 ) { } 18 login(email: String, password: String) { 19 return this.http.post(this.env.API_URL + 'auth/login', 20 {email: email, password: password} 21 ).pipe( 22 tap(token => { 23 this.storage.setItem('token', token) 24 .then( 25 () => { 26 console.log('Token Stored'); 27 }, 28 error => console.error('Error storing item', error) 29 ); 30 this.token = token; 31 this.isLoggedIn = true; 32 return token; 33 }), 34 ); 35 } 36 register(fName: String, lName: String, email: String, password: String) { 37 return this.http.post(this.env.API_URL + 'auth/register', 38 {fName: fName, lName: lName, email: email, password: password} 39 ) 40 } 41 logout() { 42 const headers = new HttpHeaders({ 43 'Authorization': this.token["token_type"]+" "+this.token["access_token"] 44 }); 45 return this.http.get(this.env.API_URL + 'auth/logout', { headers: headers }) 46 .pipe( 47 tap(data => { 48 this.storage.remove("token"); 49 this.isLoggedIn = false; 50 delete this.token; 51 return data; 52 }) 53 ) 54 } 55 user() { 56 const headers = new HttpHeaders({ 57 'Authorization': this.token["token_type"]+" "+this.token["access_token"] 58 }); 59 return this.http.get<User>(this.env.API_URL + 'auth/user', { headers: headers }) 60 .pipe( 61 tap(user => { 62 return user; 63 }) 64 ) 65 } 66 getToken() { 67 return this.storage.getItem('token').then( 68 data => { 69 this.token = data; 70 if(this.token != null) { 71 this.isLoggedIn=true; 72 } else { 73 this.isLoggedIn=false; 74 } 75 }, 76 error => { 77 this.token = null; 78 this.isLoggedIn=false; 79 } 80 ); 81 } 82}

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

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

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

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

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

m.ts10806

2019/06/22 01:58

リクエストを送っている側のコードや操作手順もご提示ください
guest

回答2

0

自己解決

https://teratail.com/questions/56252 の質問を参照してapi.phpのpostと書かれていた部分をgetに書き換えた行を追加したことで自己解決できました。

投稿2019/06/23 11:42

dauto

総合スコア38

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

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

0

The GET method is not supported for this route. Supported methods: POST.

というエラーを見る限り、POSTリクエストを想定しているのに、GETでリクエストが来ているために発生しているっぽいです。
なので、リクエストのメソッドを変更するか、GET用のルーティングを設定するのが良いかと思います。

投稿2019/06/21 17:07

tail12

総合スコア607

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

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

dauto

2019/06/21 20:03

ご返信ありがとうございます。 自分ではPOSTのリクエストしか送信していないのですが、これは別のアクセスがされているという事でしょうか。
m.ts10806

2019/06/22 05:36 編集

TypeScript詳しくないですが 追記されたコードではthis.http.get( と書かれているのでgetで送っているように見えます。
dauto

2019/06/22 06:01

すみません、見落としていました...。
dauto

2019/06/22 15:43 編集

logoutのget処理は必要なので使いたいので、api.php(web.php)にもgetのルートを書いているのですが、何処を修正すればいいでしょうか。
tail12

2019/06/22 19:37

リクエストを飛ばしている先は、logoutという認識で大丈夫ですか?
dauto

2019/06/22 19:48

リクエストはregisterに飛ばしています。 又これ以外に指定した3つのルートでも同様のエラーが発生します。
tail12

2019/06/22 20:12

なるほど。Laravel側の問題か確認するために、一度curlなどでLaravel側のAPIに、POSTリクエストを送ってみるのはどうでしょうか。 curl -XPOST http://ドメイン/Laravel-ionic/public/api/auth/register -d {"first_name": "hoge", "last_name": "fuga", "email": "example@example.com", "password": "hogehoge"} みたいな感じで。
dauto

2019/06/23 03:52

POSTMANを使ってPOSTリクエストをしたのですが、エラーは出ず送信することが出来たので、ionicの問題の様です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問