¿Qué es API?
La sigla API significa: Application Programming Interface, es una interfaz informática que define las interacciones entre los múltiples intermediarios de software. Es una forma de interactuar mediante programación con un componente o recurso de software independiente.
¿Qué es REST?
REST es un acrónimo de RE presentational S tate T ransfer. Este término fue acuñado por Roy Fielding en 2000. Es un estilo de arquitectura para el diseño de aplicaciones poco acopladas a través de HTTP, que se utiliza a menudo en el desarrollo de servicios web.
REST define 6 restricciones arquitectónicas que hacen de cualquier servicio web una verdadera API RESTful.
- Cliente-servidor: al separar la interfaz de usuario del almacenamiento de datos, mejoramos la portabilidad de la interfaz de usuario en múltiples plataformas y mejoramos la escalabilidad al simplificar los componentes del servidor.
- Sin estado : cada solicitud del cliente al servidor debe contener toda la información necesaria para comprender la solicitud y no puede aprovechar ningún contexto almacenado en el servidor. Por lo tanto, el estado de la sesión se mantiene completamente en el cliente.
- Almacenable en caché: las restricciones de caché requieren que los datos dentro de una respuesta a una solicitud se etiqueten implícita o explícitamente como almacenables en caché o no almacenables en caché. Si una respuesta se puede almacenar en caché, la caché de un cliente tiene derecho a reutilizar los datos de la respuesta para solicitudes posteriores equivalentes.
- Interfaz uniforme : al aplicar el principio de generalidad a la interfaz del componente, se simplifica la arquitectura general del sistema y se mejora la visibilidad de las interacciones.
- Sistema en capas: el estilo de sistema en capas permite que una arquitectura se componga de capas jerárquicas al restringir el comportamiento de los componentes de manera que cada componente no pueda «ver» más allá de la capa inmediata con la que están interactuando.
- Código a pedido (opcional) : REST permite ampliar la funcionalidad del cliente descargando y ejecutando código en forma de subprogramas o scripts. Esto simplifica a los clientes al reducir la cantidad de funciones que se deben implementar previamente.
Los consumidores de nuestra API podrán realizar algunas tareas limitadas. Habría los siguientes puntos finales:
Puntos finales de API para la ruta no autenticada
Relacionados con la categoría:
- Obtener todas las categorías
GET
/categories
- Obtener todas las publicaciones de una categoría
GET
/categories/{id}/posts
- Obtener todas las publicaciones
GET
/posts
- Obtener una publicación por identificación
GET
/posts/{id}
- Obtener todos los comentarios de una publicación
GET
/posts/{id}/comments
- Obtener detalles de un autor
GET
/authors/{id}
- Obtener todas las publicaciones de un autor
GET
/authors/posts
- Obtener todos los comentarios de un autor
GET
/authors/{id}/comments
- Obtener todas las publicaciones de una etiqueta
GET
/tags/{id}/posts
- Registrar un usuario
POST
/register
- Iniciar sesión el usuario
POST
/login
- Se te olvidó tu contraseña
POST
/forgot-password
Relacionado con el comentario:
- Comentario del usuario de la tienda
POST
/comments/posts/{id}
- Cerrar la sesión del usuario
POST
/logout
- Actualiza contraseña
POST
/update-password
Debe crear recursos de API , controladores y rutas de API para los puntos finales de API mencionados anteriormente.
Paso 1 : primero creemos recursos de API . Para hacerlo, siga los pasos que se mencionan a continuación (no olvide implementar la parte Migración y Relación ):
Al crear una API, es posible que necesite una capa de transformación que se encuentre entre sus modelos Eloquent y las respuestas JSON que realmente se devuelven a los usuarios de su aplicación. Las clases de recursos de Laravel le permiten transformar de manera expresiva y sencilla sus modelos y colecciones de modelos en JSON.
Ejecute el comando php artisan make:resource CategoryResource
. Se creará CategoryResource
en el app\Http\Resources
directorio.
Abra este archivo y devuelva los datos deseados, por ejemplo. category_id
en lugar de id
. Puede hacer mucho más que enmascarar los nombres de los campos o la cantidad de campos que se devolverán, como podemos devolver información adicional con API, etc.
public function toArray($request) { return [ 'category_id' => $this->id, 'category_title' => $this->title, 'category_color' => $this->color, ]; } // (Optional) Additional code is attached to the response public function with($request) { return [ 'version' => "1.0.0", 'author_url' => "https://ingenierofernandoperez.com" ]; }
Paso 2 : la siguiente actividad es crear los controladores necesarios. Para hacerlo, siga los pasos a continuación:
Ejecute el comando php artisan make:controller Api\\CategoryApiController
. Se creará CategoryApiController
en el app\Http\Controllers\Api
directorio. Abra ese archivo y escriba los métodos para realizar acciones.
public function index() { $categories = Category::all(); return CategoryResource::collection($categories); } public function posts($id) { $posts = Post::where('category_id', $id)->orderBy('id', 'desc')->paginate(); return PostResource::collection($posts); }
El index
método devolverá todas las categorías envueltas dentro CategoryResource
.
El posts
método devolverá todas las publicaciones que pertenecen a una categoría específica dentro PostResource
.
De la misma manera a crear los métodos deseados en CommentApiController
, PostApiController
, TagApiController
, y UserApiController
o repositorio de pago y envío.
Paso 3 : El último paso es crear rutas para la API. Proceder alroutes
directorio y abrir elapi.php
archivo y crear los puntos finales de API que hará referencia a los métodos creados enCategoryApiController
,CommentApiController
,PostApiController
,TagApiController
, yUserApiController
.
<?php use App\Http\Controllers\Api\CategoryApiController; use App\Http\Controllers\Api\CommentApiController; use App\Http\Controllers\Api\PostApiController; use App\Http\Controllers\Api\TagApiController; use App\Http\Controllers\Api\UserApiController; use Illuminate\Support\Facades\Route; Route::post('registration', [UserApiController::class, 'store']); Route::post('login', [UserApiController::class, 'login']); Route::post('forgot-password', [UserApiController::class, 'forgotPassword']); Route::get('authors/{id}', [UserApiController::class, 'show']); Route::get('authors/{id}/posts', [UserApiController::class, 'posts']); Route::get('authors/{id}/comments', [UserApiController::class, 'comments']); Route::get('categories', [CategoryApiController::class, 'index']); Route::get('categories/{id}/posts', [CategoryApiController::class, 'posts']); Route::get('posts', [PostApiController::class, 'index']); Route::get('posts/{id}', [PostApiController::class, 'show']); Route::get('posts/{id}/comments', [PostApiController::class, 'comments']); Route::get('tags/{id}/posts', [TagApiController::class, 'posts']); Route::middleware('auth:sanctum')->group(function () { Route::post('comments/posts', [CommentApiController::class, 'store']); Route::post('logout', [UserApiController::class, 'logout']); Route::post('update-password',[UserApiController::class, 'updatePassword']); });
Inicie la base de datos y ejecute el php artisan serve
comando. El servidor de desarrollo de Laravel se iniciaráhttp://127.0.0.1:8000
Abra Postman y pruebe todas las rutas definidas en api.php
, pero asegúrese de agregar su ruta con/api/
Para obtener todas las categorías, debe enviar una GET
solicitud ahttp://127.0.0.1:8000/api/categories
Ahora probemos authenticated route
también. Solo hay una ruta autenticada para almacenar comentarios de usuarios registrados en una publicación.
Estamos utilizando Laravel Sanctum para autenticación y autorización. Emitiremos un token de API y lo usaremos en Postman para autenticar la solicitud.
Laravel Sanctum proporciona un sistema de autenticación ligero para SPA (aplicaciones de una sola página), aplicaciones móviles y API simples basadas en tokens. Sanctum permite que cada usuario de su aplicación genere múltiples tokens API para su cuenta. A estos tokens se les pueden otorgar habilidades / alcances que especifican qué acciones pueden realizar los tokens.
Para utilizar un token de API, ejecutaremos el comando tinker
php artisan tinker
Ahora nos permitirá interactuar con la aplicación Laravel desde la línea de comandos. Aquí debe crear un token de API para un usuario que usa el createToken()
método.
Copiar plainTextToken
, para usar en Postman.
Ahora abra Postman y haga lo siguiente:
- Nueva
POST
solicitud ahttp://127.0.0.1:8000/api/comments/posts
- En
Authorization
la pestaña seleccioneType
comoBearer Token
y pegar elplainTextToken
enToken
cuadro de texto. - Luego en la
Headers
pestañaKey
comoAccept
yValue
comoapplication/json
. - Luego, en la
Body
pestaña, seleccioneform-data
el botón de radio yKey
, en ,Value
escribaid
–159
,comment
–Testing some comment on post 159
- Ahora presiona el
send
botón y obtendrás el comentario recién creado.
El código fuente está disponible en https://github.com/mdutt247/laravel-news para que te refieras.
It is perfect time to make a few plans for the long run and
it’s time to be happy. I’ve learn this submit and if I
may I wish to suggest you few interesting things or tips. Perhaps you
can write subsequent articles relating to this article. I want to read more things about it!
Hi, I think your website might be having browser compatibility
issues. When I look at your website in Opera, it looks fine
but when opening in Internet Explorer, it has some
overlapping. I just wanted to give you a quick heads up!
Other then that, great blog!
Your article helped me a lot, is there any more related content? Thanks!
I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.
Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?
Мобильные ставки стали еще удобнее — просто скачайте приложение БК и начните выигрывать прямо сейчас
Получите бонусы за установку приложения 888Starz на андроид
Организуйте доставку с минимальными затратами, выбрав попутный груз для вашего груза
Для удобной игры скачайте 888starz bet на андроид
Эффективная программа для накрутки ПФ поможет сайту подняться в выдаче Яндекса, используя надёжные способы улучшения поведенческих факторов.
Хотите отправить груз из Здвинска в Новосибирск? Попутная доставка поможет снизить затраты.
Хотите играть в мобильной версии? Скачайте 1xslots на андроид и начните игру уже сейчас.
срочный займ Sravnim.kz
Займ в Казахстане Займ без отказа
Изучите механику игры с Lucky Jet демо счет перед игрой на реальные деньги.
Мобильные приложения для ставок помогут скачать легальные БК и начать выигрывать прямо с вашего смартфона
Попробуйте Лаки джет ракета, где каждый запуск может принести удачу и выигрыш.
Play thrilling casino games with 888Starz Casino and maximize your rewards.
Con 1xslots mobile lleva tus juegos favoritos siempre contigo.