5分でDingo APIにアクセス
ベースhttps://laravel-china.org/doc...ドキュメントはDingoをより簡潔に記述し、重点を突き刺し、実践を重視する.
概要
Dingo APIは、自分のAPIを簡単に迅速に構築するのに役立ちます.このスキームの目標は、できるだけ柔軟性を維持することですが、すべての状況をカバーし、すべての問題を解決することはできません.
インストール
次のコードをcomposerに追加します.jsonでcomposer updateまたはcomposer installを実行
Laravel
プロファイルをパブリッシュし、このコマンドを実行するとconfigディレクトリの下でapiが生成されます.phpプロファイル
Lumen
あなたが使用しているlumenの場合、lumenにvendorコマンドがないためbootstrap/appを開きます.phpおよびサービスプロバイダの登録:
Facade
APIには2つのFacadeが付属しており、適宜使用できます.
これはスケジューラのFacadeで、いくつかの使いやすい補助方法を提供しています.
このFacadeを使用して、APIの現在のルーティング、リクエスト、現在のルーティングの名前のチェックなどを行うことができます.
config/appでphp aliases配列内登録Facade
コンフィギュレーション
はい.EnvファイルにDingo APIを設定する API_STANDARDS_TREE API_SUBTYPE API_PREFIX API_VERSION API_NAME API_CONDITIONAL_REQUEST API_STRICT API_DEBUG API_DEFAULT_FORMAT
API_STANDARDS_TREE
Standards Tree標準ツリー未登録のツリー(x)は、主にローカルおよびプライベート環境 を表す.プライベートツリー(prs)は主に商業発表のないプロジェクト を表す.仕入先ツリー(vnd)は、主に公開されたプロジェクト を示す.
gitとの分岐に似た概念的なもので、正常に開発されていればx,prs,vndの記述に従って記入すればよい.
API_SUBTYPE
リクエストヘッダで彼を使う必要がある
API_PREFIX
アドレスの接頭辞は、必要でない場合は'/'に記入してください.
API_VERSION
インタフェースのバージョン、デフォルトのアクセスバージョン
API_NAME
インタフェースの名前、apiドキュメントを生成するために使用され、他の場所では使用されません.
API_CONDITIONAL_REQUEST
条件要求はデフォルトでオンであり、これはクライアントのキャッシュメカニズムが可能な場合にAPI要求をキャッシュするのに有利である.
API_STRICT
要求ごとにバージョンを持たなければならないことを強制します.
API_DEBUG
デバッグを開くかどうか、開くとapiにアクセスします.
API_DEFAULT_FORMAT
返されるタイプは、一般的にjsonです
くり1個
使用
ここでは実際の業務と結びつけて説明する
テーブル構造
member
member_data
新規ルーティング
カスタムレスポンスの作成
コントローラの作成
サービスの作成
アクションの作成
リクエスト
難病
一般的な問題と解決策のリスト
バージョン区分後のアクセス方法
API_VERSIONが設定したバージョンはデフォルトのアクセスバージョンにすぎません.他のバージョンにアクセスするにはheaderに追加する必要があります.
接頭辞を追加したくない場合はどうすればいいですか?
API_PREFIXは空ではなく、内容を記入しなければなりません.それは当然の
お礼を言う
ここを見てくれてありがとう.以上、個人研究開発の総括とコードを手伝ってくれれば嬉しいです.もし何か問題があったり、文章に何か間違いがあったら、コメントエリアで返事をして、すぐに私が他人を誤解することを阻止してください.ありがとう
概要
Dingo APIは、自分のAPIを簡単に迅速に構築するのに役立ちます.このスキームの目標は、できるだけ柔軟性を維持することですが、すべての状況をカバーし、すべての問題を解決することはできません.
インストール
次のコードをcomposerに追加します.jsonでcomposer updateまたはcomposer installを実行
"require": {
"dingo/api": "2.0.0-alpha1"
}
Laravel
プロファイルをパブリッシュし、このコマンドを実行するとconfigディレクトリの下でapiが生成されます.phpプロファイル
php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
Lumen
Lumen
あなたが使用しているlumenの場合、lumenにvendorコマンドがないためbootstrap/appを開きます.phpおよびサービスプロバイダの登録:
$app->register(Dingo\Api\Provider\LumenServiceProvider::class);
Facade
APIには2つのFacadeが付属しており、適宜使用できます.
Dingo\Api\Facade\API
これはスケジューラのFacadeで、いくつかの使いやすい補助方法を提供しています.
Dingo\Api\Facade\Route
このFacadeを使用して、APIの現在のルーティング、リクエスト、現在のルーティングの名前のチェックなどを行うことができます.
config/appでphp aliases配列内登録Facade
'aliases' => [
...
'API' => Dingo\Api\Facade\API::class,
'ApiRoute' => Dingo\Api\Facade\Route::class,
],
コンフィギュレーション
はい.EnvファイルにDingo APIを設定する
API_STANDARDS_TREE
Standards Tree標準ツリー
gitとの分岐に似た概念的なもので、正常に開発されていればx,prs,vndの記述に従って記入すればよい.
API_SUBTYPE
リクエストヘッダで彼を使う必要がある
API_PREFIX
アドレスの接頭辞は、必要でない場合は'/'に記入してください.
API_VERSION
インタフェースのバージョン、デフォルトのアクセスバージョン
API_NAME
インタフェースの名前、apiドキュメントを生成するために使用され、他の場所では使用されません.
API_CONDITIONAL_REQUEST
条件要求はデフォルトでオンであり、これはクライアントのキャッシュメカニズムが可能な場合にAPI要求をキャッシュするのに有利である.
API_STRICT
要求ごとにバージョンを持たなければならないことを強制します.
Accept:application/vnd.{API_SUBTYPE}.v2+json
API_DEBUG
デバッグを開くかどうか、開くとapiにアクセスします.
API_DEFAULT_FORMAT
返されるタイプは、一般的にjsonです
くり1個
API_STANDARDS_TREE=vnd
API_SUBTYPE=catering
API_PREFIX=/
API_VERSION=v1
API_NAME="My API"
API_CONDITIONAL_REQUEST=false
API_STRICT=false
API_DEBUG=true
API_DEFAULT_FORMAT=json
使用
ここでは実際の業務と結びつけて説明する
テーブル構造
member
CREATE TABLE `member` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`tel` bigint(20) DEFAULT NULL COMMENT ' ',
`password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT ' ',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT ' 0: ',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `member_tel_unique` (`tel`),
KEY `member_tel_status_index` (`tel`,`status`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
member_data
CREATE TABLE `member_data` (
`member_id` bigint(20) NOT NULL COMMENT ' ',
`sex` enum('0','1','2') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 0=> 1=> 2=> ',
`nick_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' / ',
`img` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' ',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
UNIQUE KEY `member_data_member_id_unique` (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
新規ルーティング
$api = app ('Dingo\Api\Routing\Router');
$api->post ('user/register', 'App\Api\Controllers\UserController@register');
});
カスタムレスポンスの作成
200,
'data' => $data,
];
}
public static function error($message = '')
{
return [
'status_code' => 0,
'message' => $message,
];
}
public static function return($statusCode, $message, $data = [])
{
return [
'status_code' => $statusCode,
'message' => $message,
'data' => $data,
];
}
}
コントローラの作成
request = $request;
$this->userService = $userService;
}
public function register()
{
$result = $this->userService->register ($this->request->all ());
if ($result['status_code'] == 200) {
return $this->response->array (Response::return (200, ' ', [
'user_id' => $result['data'],
]));
}
return $this->response->error ($result['message'], 500);
}
}
サービスの作成
member = $member;
}
public function register($data)
{
try {
return Response::success ((new CreateUser())->execute ($data));
} catch (\Exception $e) {
return Response::error ($e->getMessage ());
}
}
}
アクションの作成
tel = $data['tel'];
$member->password = md5 ($data['password']);
$result = $member->save ();
if (!$result) {
throw new \Exception(' ');
}
$memberData = new MemberData();
$memberData->member_id = $member->id;
$memberData->sex = "2";
$memberData->nick_name = "";
$memberData->img = "";
$memberData->save ();
return $member->id;
}
}
リクエスト
"http://api.c.com/user/register",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r
Content-Disposition: form-data; name=\"tel\"\r
\r
18510362698\r
-----011000010111000001101001\r
Content-Disposition: form-data; name=\"password\"\r
\r
zjk1221\r
-----011000010111000001101001--",
CURLOPT_HTTPHEADER => array(
"accept: application/vnd.catering.v1+json",
"cache-control: no-cache",
"content-type: multipart/form-data; boundary=---011000010111000001101001",
"postman-token: e7cf665f-3698-217a-cd71-35c3a44f42bc"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
難病
一般的な問題と解決策のリスト
バージョン区分後のアクセス方法
API_VERSIONが設定したバージョンはデフォルトのアクセスバージョンにすぎません.他のバージョンにアクセスするにはheaderに追加する必要があります.
Accept:application/vnd.{API_SUBTYPE}.v2+json
接頭辞を追加したくない場合はどうすればいいですか?
API_PREFIX=/
API_PREFIXは空ではなく、内容を記入しなければなりません.それは当然の
/
が正しいに違いありません.お礼を言う
ここを見てくれてありがとう.以上、個人研究開発の総括とコードを手伝ってくれれば嬉しいです.もし何か問題があったり、文章に何か間違いがあったら、コメントエリアで返事をして、すぐに私が他人を誤解することを阻止してください.ありがとう