PHPackages                             thomas-claireau/bilemo - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. thomas-claireau/bilemo

ActiveProject[API Development](/categories/api)

thomas-claireau/bilemo
======================

package manager for my project

1.0.0(6y ago)00[1 issues](https://github.com/thomas-claireau/bilemo/issues)MITPHPPHP ^7.1.3CI failing

Since Feb 28Pushed 4y ago1 watchersCompare

[ Source](https://github.com/thomas-claireau/bilemo)[ Packagist](https://packagist.org/packages/thomas-claireau/bilemo)[ RSS](/packages/thomas-claireau-bilemo/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (41)Versions (2)Used By (0)

\[PHP\] - Bilemo - Créez un web service exposant une API
========================================================

[](#php---bilemo---créez-un-web-service-exposant-une-api)

[![Codacy Badge](https://camo.githubusercontent.com/3d2489653e087d5fabc820247666a454389e6a9baf43c7b35128285bb52ee112/68747470733a2f2f6170692e636f646163792e636f6d2f70726f6a6563742f62616467652f47726164652f6130346436653135343631633464363761346139623865626339623739363130)](https://www.codacy.com/manual/thomas-claireau/PHP-P7-Openclassrooms?utm_source=github.com&utm_medium=referral&utm_content=thomas-claireau/PHP-P7-Openclassrooms&utm_campaign=Badge_Grade)

Installation du projet
----------------------

[](#installation-du-projet)

Via Composer :

```
composer create-project thomas-claireau/bilemo:dev-master

```

Dans le cas où vous téléchargez directement le projet (ou encore avec `git clone`), effectuez un `composer install` à la racine du projet.

Installez ensuite les dépendances front du projet (pour lancer l'interface d'api-platform). Placez-vous à la racine du projet :

```
npm install

```

### Remarque

[](#remarque)

#### Accès base de données

[](#accès-base-de-données)

Le projet est livré sur Packagist sans base de données. Cela signifie qu'il faut que vous ajoutiez votre configuration, dans le fichier `.env`, dans la partie `DATABASE_URL`.

#### Injection SQL et structure du projet

[](#injection-sql-et-structure-du-projet)

Pour obtenir une structure similaire à mon projet au niveau de la base de données, je vous joins aussi dans le dossier `~src/Migrations/` les versions de migrations que j'ai utilisées. Vous pouvez donc recréer la base de données en effectuant la commande suivante, à la racine du projet :

```
php bin/console doctrine:migrations:migrate

```

Après avoir créer votre base de données, vous pouvez également injecter un jeu de données en effectuant la commande suivante :

```
php bin/console doctrine:fixtures:load

```

### Lancer le projet

[](#lancer-le-projet)

A la racine du projet :

- Pour lancer le serveur de développement, effectuez un `npm run dev-server`.
- Pour lancer le serveur de symfony, effectuez un `php bin/console server:run`.

### Authentification

[](#authentification)

A ce niveau la, vos requêtes vers l'api seront refusées car vous ne serez pas authentifié au sein du projet. Suivez donc les étapes suivantes :

#### 1. Générer les clés SSH pour le Json Web Token (JWT)

[](#1-générer-les-clés-ssh-pour-le-json-web-token-jwt)

#### 2. Récupérez ou créez vous un compte

[](#2-récupérez-ou-créez-vous-un-compte)

Dans les fixtures du projet (`src/DataFixtures`), ajoutez votre propre compte.

Vous pouvez aussi utiliser le compte suivant :

- email :
- password : root

#### 3. Générez un JWT

[](#3-générez-un-jwt)

```
curl -X POST -H "Content-Type: application/json" http://bilemo.thomas-claireau.fr/authentication_token -d "{\"email\":\"YOUR_EMAIL\",\"password\":\"YOUR_PASSWORD\"}"

```

Remplacez YOUR\_EMAIL par votre email (par ex. ) et YOUR\_PASSWORD par votre mot de passe (par ex. root)

Vous devriez obtenir le résultat suivant :

```
{
	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1ODI4NzA2NzEsImV4cCI6MTU4Mjg3NDI3MSwicm9sZXMiOlsiUk9MRV9BRE1JTiJdLCJlbWFpbCI6InJvb3RAcm9vdC5mciJ9.J4lnq2gxrrKY5MB39AGvVYlM7ezYvTcgI-ITBdjxXNAu-5ePTqYdW6-SaJLyZCXdDeUXFi0An89oPVHIRgzdifLyav5CLxUnkX_aDQcxD4Gnh3pLJnOeRb7zBGN7XR8ZUG1raG6S84ZrIzdANCkz-xq24Z1F-ahPd30SxmgV0GNFh5bH7pzfgaJflhpi0KMWdL1dUJgK788UGJvVW7FYNcm9SsR3h3-wCd33bcJ1h60f4QQ-xxEMCZihfEhIvMmotcA1r"
}
```

#### 4. Utilisez le JWT pour effectuer des opérations

[](#4-utilisez-le-jwt-pour-effectuer-des-opérations)

Récupérez le token généré pour commencer à utiliser l'API de Bilemo.

```
curl -H "Authorization: Bearer {yourtoken}" {yourdomain}/api/{entrypoint}

```

Pour connaitre tous les entrypoints disponibles, allez voir la [démo du projet 👋](http://bilemo.thomas-claireau.fr)

Contexte
--------

[](#contexte)

BileMo est une entreprise offrant toute une sélection de téléphones mobiles haut de gamme.

Vous êtes en charge du développement de la vitrine de téléphones mobiles de l’entreprise BileMo. Le business modèle de BileMo n’est pas de vendre directement ses produits sur le site web, mais de fournir à toutes les plateformes qui le souhaitent l’accès au catalogue via une API (Application Programming Interface). Il s’agit donc de vente exclusivement en B2B (business to business).

Il va donc falloir que vous exposiez un certain nombre d’API pour que les applications des autres plateformes web puissent effectuer des opérations.

Besoin client
-------------

[](#besoin-client)

Le premier client a enfin signé un contrat de partenariat avec BileMo ! C’est le branle-bas de combat pour répondre aux besoins de ce premier client qui va permettre de mettre en place l’ensemble des API et les éprouver tout de suite.

Après une réunion dense avec le client, il a été identifié un certain nombre d’informations. Il doit être possible de :

consulter la liste des produits BileMo ; consulter les détails d’un produit BileMo ; consulter la liste des utilisateurs inscrits liés à un client sur le site web ; consulter le détail d’un utilisateur inscrit lié à un client ; ajouter un nouvel utilisateur lié à un client ; supprimer un utilisateur ajouté par un client. Seuls les clients référencés peuvent accéder aux API. Les clients de l’API doivent être authentifiés via Oauth ou JWT.

Vous avez le choix de mettre en place un serveur Oauth et d’y faire appel (en utilisant le FOSOAuthServerBundle) ou d’utiliser Facebook, Google ou LinkedIn. Si vous décidez d’utiliser JWT, il vous faudra vérifier la validité du token ; l’usage d’une librairie est autorisée.

Présentation des données
------------------------

[](#présentation-des-données)

Le premier partenaire de BileMo est très exigeant : il requiert que vous exposiez vos données en suivant les règles des niveaux 1, 2 et 3 du modèle de Richardson. Il a demandé à ce que vous serviez les données en JSON. Si possible, le client souhaite que les réponses soient mises en cache afin d’optimiser les performances des requêtes en direction de l’API.

✔️ Projet validé
----------------

[](#️-projet-validé)

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2263d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/64d9a6f4edb5a64cc51409fea4641a84391f340cf1c73f1590639cb87331af40?d=identicon)[thomas-claireau](/maintainers/thomas-claireau)

---

Top Contributors

[![imtomdev](https://avatars.githubusercontent.com/u/45904840?v=4)](https://github.com/imtomdev "imtomdev (37 commits)")

---

Tags

completed-projectopenclassroomsopenclassrooms-backendphpapisymfonywebmvcapplication

### Embed Badge

![Health badge](/badges/thomas-claireau-bilemo/health.svg)

```
[![Health](https://phpackages.com/badges/thomas-claireau-bilemo/health.svg)](https://phpackages.com/packages/thomas-claireau-bilemo)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M650](/packages/sylius-sylius)[ibexa/oss

A meta package for installing Ibexa Open Source

19772.4k11](/packages/ibexa-oss)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[kimai/kimai

Kimai - Time Tracking

4.6k7.4k1](/packages/kimai-kimai)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
