Зараз я визначаю свої маршрути саме так. Ознайомившись з документацією контролера Laravel, я знайшов метод, який дозволяє мені створювати кілька ресурсів API одночасно. Ось як це можна зробити, і ви можете знайти додаткову інформацію на сторінці документації. Я намагаюся спростити процес реєстрації ресурсів Api для мого API на базі Laravel.
Зміст
- Як використовувати параметр маршруту apiResource з реченням where в laravel
- Спосіб згрупувати ресурс api в laravel 8?
- Як використовувати метод apiReources з «лише»?
- Ресурс Laravel API, колиLoaded не працює належним чином з іншими значеннями
- Що таке ресурс Laravel API?
- Що таке параметр post у методі ресурсу в Laravel?
- Як створити книжковий ресурс на Laravel?
- Яка URL-адреса для доступу до методу create () у Laravel?
Як використовувати параметр маршруту apiResource з реченням where у laravel Питання:
Я прагну надати параметр для маршруту apiResource і обмежити дозволені значення за допомогою пункту where, але я зіткнувся з проблемою з laravel
throw .
Route::apiResource('/admin/{category}/attributes', 'AttributeController')
->where('category', 'industries|professions|studies|experiences|locations');
Я отримав таку помилку: Рішення: Передача в якості третього аргументу методу
Route::apiResource
може бути досягнута
options
за допомогою такого синтаксису:
> BadMethodCallException Method
> Illuminate\Routing\PendingResourceRegistration::where does not exist.
Route::apiResource('/admin/{category}/attributes', 'AttributeController', [
'where' => ['category' => 'industries|professions|studies|experiences|locations']
]);
Laravel apiresource array Приклад коду, При оголошенні маршрутів ресурсів, які будуть споживатися API, ви зазвичай захочете виключити маршрути, які представляють HTML-шаблони, такі як "create" і "edit" ...
Laravel API Ресурс: Завантаження відносин правильним способом
Відвідайте https://acadea.io/learn, щоб отримати більше уроків та вмісту! Приєднуйтесь до моєї розсилки тут, щоб отримувати НАЙКРАЩІ оновлення: https://sendfox.com/acadeaSupport мене: https://ww
Спосіб згрупувати ресурс API в laravel 8?
Я прагну надати параметр для маршруту apiResource і обмежити дозволені значення за допомогою пункту where, але я зіткнувся з проблемою з laravel
По суті, я шукав ефективний метод класифікації цих маршрутів у Laravel 8. Очевидно, що Route::apiResource() реплікується, а це означає, що для цього має бути альтернативний підхід.
Route::middleware('auth:api')->group(function () {
Route::post('logout', [AuthController::class, 'logout'])->name('logout');
Route::apiResource('stores', StoreController::class);
Route::apiResource('books', BookController::class);
Route::apiResource('companies', CompanyController::class);
Route::apiResource('users', UserController::class);
Route::apiResource('posts', PostController::class);
Route::apiResource('projects', ProjectController::class);
Route::apiResource('category_projects', CategoryProjectController::class);
Route::apiResource('parent_category_projects', ParentCategoryProjectController::class);
Route::apiResource('child_category_projects', ChildCategoryProjectController::class);
Route::post('books/{book}/ratings', [RatingController::class, 'store']);
});
Ви можете зробити це так:
Route::apiResources([
'stores' => StoreController::class,
'books'=> BookController::class,
'companies' => CompanyController::class,
'users' => UserController::class,
'posts' => PostController::class,
'projects' => ProjectController::class,
'category_projects'=> CategoryProjectController::class,
'parent_category_projects' => ParentCategoryProjectController::class,
'child_category_projects' => ChildCategoryProjectController::class
]);
Цей конкретний розділ сторінки документації надає читачам інформацію для ознайомлення.
Laravel - як використовувати метод apiReources з 'тільки'?, Я створюю API за допомогою Laravel і шукаю простий лінивий спосіб зареєструвати ресурси API. Зараз я визначаю свої маршрути так: ...Як
використовувати метод apiReources з 'only'?
Я прагну надати параметр для маршруту apiResource і обмежити дозволені значення за допомогою пункту where, але я зіткнувся з проблемою з laravel
Коли я розробляю API за допомогою Laravel, я шукаю легкий лінивий підхід до реєстрації ресурсів API . Моя поточна практика передбачає визначення маршрутів наступним чином:
Route::apiResource('categories', 'CategoryController')->only(['index', 'show']);
Переглядаючи деяку документацію, я натрапив
apiResources
на , яка пропонує мені спосіб ефективного доступу до кількох ресурсів API за допомогою лише одного виклику методу. Мене особливо цікавить перевірений контролер Laravel цей функціонал.
Мета полягає в тому, щоб використовувати
apiResources
в поєднанні з
only
підходом.
Route::apiResources(['categories' => 'CategoryController', 'products' => 'ProductController'])->only(['index', 'show']);
поточний результат:
Функція "only()" була викликана для нульового члена.
Підсумовуючи, якщо вам не цікаво читати всю історію, ви можете просто виконати ці кроки.
Route::apiResources(['brands' => 'BrandController', 'categories' => 'CategoryController'], ['only' => ['index', 'show']]);
Складаючи питання, я не забув перевірити декларацію для
apiResources
. Зробивши це, я виявив наступну інформацію:
/**
* Register an array of API resource controllers.
*
* @param array $resources
* @param array $options
* @return void
*/
public function apiResources(array $resources, array $options = [])
{
foreach ($resources as $name => $controller) {
$this->apiResource($name, $controller, $options);
}
}
Використовуючи
apiResource
як базовий фреймворк, я можу вивчити доступні варіанти завдяки його параметричній природі параметрів.
/**
* Route an API resource to a controller.
*
* @param string $name
* @param string $controller
* @param array $options
* @return \Illuminate\Routing\PendingResourceRegistration
*/
public function apiResource($name, $controller, array $options = [])
{
$only = ['index', 'show', 'store', 'update', 'destroy'];
if (isset($options['except'])) {
$only = array_diff($only, (array) $options['except']);
}
return $this->resource($name, $controller, array_merge([
'only' => $only,
], $options));
}
Laravel API Ресурс: Завантаження відносин правильним способом, Відвідайте https://acadea.io/learn, щоб отримати більше уроків та вмісту! Приєднуйтесь до моєї розсилки тут, щоб отримувати НАЙКРАЩІ оновлення: https://sendfox.com/acadeaSupport мене: https://ww
ресурс Laravel API, колиLoaded не працює належним чином з іншими значеннями
Я прагну надати параметр для маршруту apiResource і обмежити дозволені значення за допомогою пункту where, але я зіткнувся з проблемою з laravel
Оскільки я працюю з ресурсами API, я маю намір включити додаткову логіку. Ресурс, з яким я зараз маю справу, виглядає наступним чином:Зв'язок
contacts
передбачає відносини «один-до-багатьох», які надають різні варіанти контакту (телефон,
return [
'id' => $this->id,
'name' => $this->name,
'contacts' => $this->whenLoaded('contacts'),
'phone' => $this->whenLoaded('contacts',
$this->contacts->where('type', '=', 'phone')->first()
? $this->contacts->where('type', '=', 'phone')->first()->value
: null),
];
наприклад, електронна пошта, телефон та інші.
Я вирішив включити атрибут 'phone', який буде виводити контакт телефону .
Код функціонує належним чином, але проблема полягає в тому, що атрибут phone завантажується послідовно, навіть якщо відношення 'contacts' не завантажено. Це негативно впливає на продуктивність, оскільки призводить до проблеми N+1, коли атрибут телефону не потрібен.
Чи є моє використання методу henLoaded неправильним? По суті, логіка говорить, що якщо зв'язок контактів завантажений, отримайте атрибут phone, в іншому випадку утримайтеся від цього.
Щоб уникнути негайного виконання другого аргументу, можна передати в метод викликану функцію.
Ви повинні структурувати його таким чином:
return [
'id' => $this->id,
'name' => $this->name,
'contacts' => $this->whenLoaded('contacts'),
'phone' => $this->whenLoaded('contacts', function() {
return object_get($this->contacts->where('type', 'phone')->first(), 'value');
})
];
На додаток до
object_get()
, я також реалізував деяке спрощення.
Laravel 8 - Ресурси API для початківців (10 кроків), Оскільки ми створюємо API, ми використовуємо apiResource() для генерації маршрутів лише API. Крім того, ми визначаємо маршрут, який буде використовуватися для оцінки ...