Skip to content

Commit efaa44f

Browse files
author
771_1023939159_spider
committed
使用Oauth2 scope && 添加错误处理 && 优化接口数据格式
1 parent 3ccb0fa commit efaa44f

File tree

8 files changed

+243
-2
lines changed

8 files changed

+243
-2
lines changed
+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?php
2+
3+
namespace App\Http\Controllers;
4+
5+
use Illuminate\Http\Request;
6+
7+
class ApiController extends Controller
8+
{
9+
/**
10+
* @var int
11+
*/
12+
protected $statusCode = 200;
13+
14+
/**
15+
* @return int
16+
*/
17+
public function getStatusCode(): int
18+
{
19+
return $this->statusCode;
20+
}
21+
22+
/**
23+
* @param int $statusCode
24+
* @return $this
25+
*/
26+
public function setStatusCode(int $statusCode)
27+
{
28+
$this->statusCode = $statusCode;
29+
30+
return $this;
31+
}
32+
33+
/**
34+
* @param string $message
35+
* @return mixed
36+
*/
37+
public function responseNotFound(string $message = 'Not Found')
38+
{
39+
40+
return $this->setStatusCode(404)->responseError($message);
41+
}
42+
43+
/**
44+
* @param string $message
45+
* @return mixed
46+
*/
47+
private function responseError(string $message)
48+
{
49+
50+
return $this->response([
51+
'status' => 'failed',
52+
'errors' => [
53+
'status_code' => $this->getStatusCode(),
54+
'message' => $message
55+
]
56+
]);
57+
}
58+
59+
/**
60+
* @param array $data
61+
* @return mixed
62+
*/
63+
public function response(array $data)
64+
{
65+
66+
return \Response::json($data, $this->getStatusCode());
67+
}
68+
}
+117
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
<?php
2+
3+
namespace App\Http\Controllers;
4+
5+
use App\Transformer\UserTransformer;
6+
use App\User;
7+
use Illuminate\Http\Request;
8+
9+
class UserController extends ApiController
10+
{
11+
/**
12+
* @var
13+
*/
14+
protected $userTransformer;
15+
16+
/**
17+
* UserController constructor.
18+
* @param $userTransformer
19+
*/
20+
public function __construct(UserTransformer $userTransformer)
21+
{
22+
$this->userTransformer = $userTransformer;
23+
}
24+
25+
/**
26+
* Display a listing of the resource.
27+
*
28+
* @return \Illuminate\Http\Response
29+
*/
30+
public function index()
31+
{
32+
33+
$users = User::all();
34+
35+
return $this->response([
36+
'status' => 'success',
37+
'data' => $this->userTransformer->transformerCollection($users->toArray())
38+
]);
39+
}
40+
41+
/**
42+
* Display the specified resource.
43+
*
44+
* @param int $id
45+
* @return \Illuminate\Http\Response
46+
*/
47+
public function show($id)
48+
{
49+
$user = User::find($id);
50+
51+
if(!$user){
52+
return $this->responseNotFound();
53+
}
54+
55+
return $this->response([
56+
'status' => 'success',
57+
'data' => $this->userTransformer->transform($user)
58+
]);
59+
}
60+
61+
/**
62+
* Show the form for creating a new resource.
63+
*
64+
* @return \Illuminate\Http\Response
65+
*/
66+
public function create()
67+
{
68+
//
69+
}
70+
71+
/**
72+
* Store a newly created resource in storage.
73+
*
74+
* @param \Illuminate\Http\Request $request
75+
* @return \Illuminate\Http\Response
76+
*/
77+
public function store(Request $request)
78+
{
79+
//
80+
}
81+
82+
83+
84+
/**
85+
* Show the form for editing the specified resource.
86+
*
87+
* @param int $id
88+
* @return \Illuminate\Http\Response
89+
*/
90+
public function edit($id)
91+
{
92+
//
93+
}
94+
95+
/**
96+
* Update the specified resource in storage.
97+
*
98+
* @param \Illuminate\Http\Request $request
99+
* @param int $id
100+
* @return \Illuminate\Http\Response
101+
*/
102+
public function update(Request $request, $id)
103+
{
104+
//
105+
}
106+
107+
/**
108+
* Remove the specified resource from storage.
109+
*
110+
* @param int $id
111+
* @return \Illuminate\Http\Response
112+
*/
113+
public function destroy($id)
114+
{
115+
//
116+
}
117+
}

app/Http/Kernel.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class Kernel extends HttpKernel
3333
\Illuminate\Session\Middleware\StartSession::class,
3434
// \Illuminate\Session\Middleware\AuthenticateSession::class,
3535
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
36-
\App\Http\Middleware\VerifyCsrfToken::class,
36+
// \App\Http\Middleware\VerifyCsrfToken::class,
3737
\Illuminate\Routing\Middleware\SubstituteBindings::class,
3838
],
3939

app/Transformer/Transformer.php

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace App\Transformer;
4+
5+
6+
abstract class Transformer
7+
{
8+
/**
9+
* @param $items
10+
* @return array
11+
*/
12+
public function transformerCollection($items)
13+
{
14+
15+
return array_map([$this, 'transform'], $items);
16+
}
17+
18+
/**
19+
* @param $item
20+
* @return mixed
21+
*/
22+
public abstract function transform($item);
23+
}

app/Transformer/UserTransformer.php

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
4+
namespace App\Transformer;
5+
6+
7+
class UserTransformer extends Transformer
8+
{
9+
/**
10+
* @param $user
11+
* @return array
12+
*/
13+
public function transform($user)
14+
{
15+
16+
return [
17+
'username' => $user['name'],
18+
'email' => $user['email'],
19+
'created_time' => $user['created_at'],
20+
];
21+
}
22+
}

app/User.php

+9
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,13 @@ class User extends Authenticatable
3737
protected $casts = [
3838
'email_verified_at' => 'datetime',
3939
];
40+
41+
/**
42+
* @param $username
43+
* @return mixed
44+
*/
45+
public function findForPassport($username)
46+
{
47+
return $this->where('email', $username)->first();
48+
}
4049
}

config/app.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
|
5353
*/
5454

55-
'url' => env('APP_URL', 'http://localhost'),
55+
'url' => env('APP_URL', 'http://laravel-oauth2-server.test'),
5656

5757
'asset_url' => env('ASSET_URL', null),
5858

routes/web.php

+2
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,5 @@
4141
echo ' && place-orders';
4242
}
4343
})->middleware('auth:api', 'scope:check-status,place-orders');
44+
45+
Route::resource('users','UserController');

0 commit comments

Comments
 (0)