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

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

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

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

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1808閲覧

Laravel Api作成について

CCHH

総合スコア11

Laravel

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

PHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/02/26 16:43

編集2020/02/26 22:56

Laravelで簡単な todo list アプリを開発中です。
todoの登録、削除、表示のroutingのApi作成中です。

postmanを使ってApiのテストをしていますが、上手くデータが返ってきません。
Api作成過程のどこが間違っているかわからないため、教えて頂ければと思い質問させて頂きます。
以下コードです。

routes/Api.php

php

1<?php 2 3use Illuminate\Http\Request; 4 5Route::resource('todo', 'Todocontroller');

app/Http/Controllers/TodoController.php

PHP

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Todo; 7use Auth; 8 9class Todocontroller extends Controller 10{ 11 12// ログインしないと見れない 13public function __construct(){ 14$this->middleware('auth'); } 15 16 //todo表示 17public function index() { 18$todos = Todo::where('user_id',Auth::user()->id)->orderBy('created_at', 'asc')->get(); 19return view('home'); 20} 21 22// todo登録 23public function store(Request $request) { 24$todos = new Todo; 25$todos->user_id = Auth::user()->id; 26$todos->name = $request->name; 27$todos->save(); 28return redirect('/'); 29} 30 31// todo削除 32public function destroy(Todo $todo) { 33$todo->delete(); 34return redirect('/'); 35} 36

$ php artisan route:list

| Domain | Method | URI | Name | Action | Middleware | +--------+-----------+------------------------+------------------+------------------------------------------------------------------------+------------+ | | GET|HEAD | / | | App\Http\Controllers\Todocontroller@index | web,auth | | | GET|HEAD | api/todo | todo.index | App\Http\Controllers\Todocontroller@index | api,auth | | | POST | api/todo | todo.store | App\Http\Controllers\Todocontroller@store | api,auth | | | GET|HEAD | api/todo/create | todo.create | App\Http\Controllers\Todocontroller@create | api,auth | | | GET|HEAD | api/todo/{todo} | todo.show | App\Http\Controllers\Todocontroller@show | api,auth | | | PUT|PATCH | api/todo/{todo} | todo.update | App\Http\Controllers\Todocontroller@update | api,auth | | | DELETE | api/todo/{todo} | todo.destroy | App\Http\Controllers\Todocontroller@destroy | api,auth | | | GET|HEAD | api/todo/{todo}/edit | todo.edit | App\Http\Controllers\Todocontroller@edit | api,auth |

postmanでHTTPメソッドをPOSTにし、横のURL入力欄にhttp://localhost:8000/api/todoと入力。
タブメニューのBodyでkeyとvalueを設定してSendを押すことでレコードを新規作成するはずなんですが、この時点で、一番最初のログインページのhtmlが表示されます。入力したkeyとvalueは表示されません。

HTTPメソッドをGETにしてsendを入力すると、JSONで一覧が返ってくるはずですが、ここでもやはり最初のログインページのhtmlが表示されます。

個人的にはMiddlewareのapi,auth辺りが怪しいのかな?とか思いましたが、ログインしないと見れないページにしたいので、どこをどう変えれば良いかわからず困っています。

初心者の質問で申し訳ございませんが、ご存知の方教えて頂ければ幸いです。

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

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

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

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

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

m.ts10806

2020/02/26 20:54

Lalavel  というのは私は存じ上げません。 タグついてないようですが「Laravel」ですよね。 https://teratail.com/tags/Laravel タグ付けと質問内の文言調整お願いします。 ここで誤りが出ていると伝わるものも伝わりませんし情報の信用性が落ちます。
CCHH

2020/02/26 22:56

ご指摘ありがとうございます。スペルミスを修正しました。ありがとうございます。
guest

回答1

0

ベストアンサー

$this->middleware('auth');auth:webを省略してる形なので
routes/api.php側で使うなら$this->middleware('auth:api');にする。
もちろんAPI用の認証方法を使う。

apiなのにこれはおかしいので難しいことせずもっと簡単なことから学習したほうがいい。
return view('home');
return redirect('/');

投稿2020/02/27 01:13

kawax

総合スコア10377

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

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

CCHH

2020/02/27 06:37

回答頂きありがとうございます。 実は認証方法はLaravelのデフォルトのroutingをそのまま使用しています。 やはり認証もapiにしないと出来ないでしょうか? 初心者の質問で本当にすいません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問