■やりたいこと
LaravelでREAT APIを実装したい
■環境
xampp(PHP 7.4.11・Windows10)
Laravel 6.20.2
■症状
設定を行い、localhost:8000へアクセスしたところ以下のメッセージが表示される
curl: (7) Failed to connect to localhost port 8000: Connection refused
■やったこと
restという名前でlaravelプロジェクトを作成
localhost/rest/public でプロジェクトトップ画面表示を確認
apacheのhttpd.confに以下のソースを加えてlocalhostでプロジェクトトップ画面表示を確認
httpd.conf
1Alias / "/xampp/htdocs/rest/public/" 2 3<Directory "/xampp/htdocs/rest/public/"> 4 Options Indexes FollowSymLinks MultiViews 5 AllowOverride all 6 Order allow,deny 7 Allow from all 8</Directory>
以下、下記サイトを参考に作業を行っております。
https://noumenon-th.net/programming/2020/02/12/laravel-api/
コントローラを作成
PHP
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Models\Book; 7use App\Http\Requests\StoreBook; 8 9class BookController extends Controller 10{ 11 /** 12 * Display a listing of the resource. 13 * 14 * @return \Illuminate\Http\Response 15 */ 16 public function index() 17 { 18 $books = Book::all(); 19 return response()->json([ 20 'message' => 'ok', 21 'data' => $books 22 ], 200, [], JSON_UNESCAPED_UNICODE); 23 } 24 25 /** 26 * Store a newly created resource in storage. 27 * 28 * @param \Illuminate\Http\Request $request 29 * @return \Illuminate\Http\Response 30 */ 31 public function store(StoreBook $request) 32 { 33 $book = Book::create($request->all()); 34 return response()->json([ 35 'message' => 'Book created successfully', 36 'data' => $book 37 ], 201, [], JSON_UNESCAPED_UNICODE); 38 } 39 40 /** 41 * Display the specified resource. 42 * 43 * @param int $id 44 * @return \Illuminate\Http\Response 45 */ 46 public function show($id) 47 { 48 $book = Book::find($id); 49 if ($book) { 50 return response()->json([ 51 'message' => 'ok', 52 'data' => $book 53 ], 200, [], JSON_UNESCAPED_UNICODE); 54 } else { 55 return response()->json([ 56 'message' => 'Book not found', 57 ], 404); 58 } 59 } 60 61 /** 62 * Update the specified resource in storage. 63 * 64 * @param \Illuminate\Http\Request $request 65 * @param int $id 66 * @return \Illuminate\Http\Response 67 */ 68 public function update(StoreBook $request, $id) 69 { 70 $update = [ 71 'title' => $request->title, 72 'author' => $request->author 73 ]; 74 $book = Book::where('id', $id)->update($update); 75 if ($book) { 76 return response()->json([ 77 'message' => 'Book updated successfully', 78 ], 200); 79 } else { 80 return response()->json([ 81 'message' => 'Book not found', 82 ], 404); 83 } 84 } 85 86 /** 87 * Remove the specified resource from storage. 88 * 89 * @param int $id 90 * @return \Illuminate\Http\Response 91 */ 92 public function destroy($id) 93 { 94 $book = Book::where('id', $id)->delete(); 95 if ($book) { 96 return response()->json([ 97 'message' => 'Book deleted successfully', 98 ], 200); 99 } else { 100 return response()->json([ 101 'message' => 'Book not found', 102 ], 404); 103 } 104 } 105}
バリデーションはその箇所でエラーを起こすと別のメッセージが出るので割愛します。
で、確認すると以下の8000ポートのConnection refusedメッセージが返されます。
同様に以下のサイトの記述に基づいて作業しても同様の
正常に接続できませんでした
localhost:8000 のサーバーへの接続を確立できませんでした。
というメッセージが返されます。
原因がわかりましたらご教授いただけますでしょうか。
宜しくお願いします。
回答3件
あなたの回答
tips
プレビュー