Bonjour à toutes et à tous,

Je suis en pleine reconversion pro en programmation, après avoir appris les bases du developpement web en autodidacte et frequenté un cours de programmation .NET je me retrouve à faire un stage dans une societe qui bosse en php/laravel et je suis sensé faire des API.

Je ne connais absolument rien aux API, ni au php/laravel d'ailleurs. Et sincèrement ca ne m'emballe pas trop de faire ca. Faire des API si j'ai bien compris ce n'est qu'une partie du developpement backend et ca à l'air plutot repetitif comme sujet non? Meme les offres d'emploi a ce sujet semblent plus précises, dans le sens ou les recruteurs specifient clairement "developpeur backend (api)", ou "concepteur d'API". Honnetement, etant en debut de carrière je me voyais pas du tout faire ca, j'aime le backend et le developpement logiciel mais les API bof bof... Qu'en pensez vous?

43 réponses


gargotier
Auteur
Réponse acceptée

Merci pour la reponse gulshan212,

En fait je voudrais savoir quels sont les opportunites dans le domaine des APi en terme d'emploi et de remuneration. parce que si j'ai bien compris, les API sont une espece de niche du backend j'ai donc un peu peur de me surspecialisé des le debut dans les API et que la technologie et le marché evoluent vers une autre direction.

popotte
Réponse acceptée

Si tu as un Linux oui, Xamp c'est pour Linux (Wamp pour windows, Xamp pour Linux, Mamp pour Mac) x)

En vrai en serveur apache si tu sais utiliser la ligne de commande utilises MySQL direct, et pour le client Mysql tu peux utiliser MySQL Workbench, au moins t'as les outils fournis par Oracle :p et si t'es pas trop a l'aise avec la ligne de commande utilises Laragon, plus simple et surtout moins lourd que Wamp :p

Hello,

La technologie d'API existe et existera toujours par contre créer une API n'est qu'une des nombreuses choses que l'on peut faire avec du back. Avant de se spécialiser dans l'API je dirai de simplement se spécialiser dans le back (peu importe la techno utilisé).

Pour rappel une API n'est que la possibilité d'effectuer des actions depuis un client externe (navigateur, application mobile, autre serveur back, ...) Donc pour moi faire une API c'est comme faire une page PHP sauf que au lieu de rendre une page HTML complète, on va rendre des données (JSON souvant mais il existe en XML) pour que le client qui consomme notre API puisse avoir ce qu'il souhaite.

Hello :)

Alors le faire de développer des API franchement ça dépends, si c'est uniquement des API de données (ton fait un appel sur ton point d'entrée, tu récupères des données en BDD, tu les agrèges et tu les renvoies en sortie en JSON) alors oui ce sera ultra répétitif, maitnenant si ce sont des API des services, alors la y a moyen d'avoir un taf très varié, en gros le serveur ou le navigateur fait un appel vers ton point d'entrée, et tu effectues une action qui peut être n'importe quoi, et quand c'est fait en général tu renvoies un json comme ça: {code: 200, statut: 'OK'}

Et si c'est un service, alors l'API c'est juste un point d'acces vers une apli complète à faire :p

Si c'est la deuxième catégorie alors c'est très cool de faire des API, c'est comme du dev open-source, sauf que ce sont des paquets propriétaires pour ta boite :p Si c'et la première catégorie (juste un échange de données) alors perso je prendrais pas, trop répétitif c'est chiant

Bonjour a tous et bonne et heureuse annee!!!

@quenti77:

Alors justement moi je voudrais bien faire du backend en general pour commencer avant de me specialiser dans une branche particuliere parce que deja ca me semble plus intelligent comme approche, malheureusement ce n'est pas moi qui ai decide cela, j'ai ete envoye en stage dans cette boite et le tuteur de stage fait uniquement des API....

@popotte:

Alors de ce que m'a explique le tuteur, la boite ou je fais le stage a fait une application mobile, et il y a aussi un acces via site web. et lui il gere les API entre le site et l'application. De ce que j'ai vu jusque la, c'est du laravel pour faire des API REST donc json qu'il test avec Postman. A ton avis c'est la premiere ou deuxieme categorie? Moi ca m'a l'air d'etre la premiere...

De plus, le tuteur exige de moi que je maitrise laravel et eloquent alors que je n'ai qu'une connaissance sommaire du php etant donne que j'ai fait du javascript et un peu de c# dans le cadre de l'apprentissage du framework .NET (application windows form desktop). Ca vous semble logique a vous?

Alors si faut une maitrise de Laravel et Eloquent (bon... en gros Laravel) ça peut être les deux cas, en gros tu manipulera la base de données, tu donnera aussi des infos, mais tu effectueras aussi des actions pour l'appli, sen gros il y a les controller direct pour le site Laravel, mais pour l'appli ils utilisent des api pour faire les actions, tu devra reproduire le conportement du site mais pour les appli, et selon la situation tu envera soit un json de confirmation, soit des données, soit un token

Bon la ça dépends ce que tu préfères, il y a deux types d'entreprises, les agences qui font plusieurs projets différents, ou la branche tech d'une entreprise qui fait évoluer une appli éxistante, ta boite c'est le deuxième cas, a voir ce que tu préfères :p

Ensuite pour la maitrise de Laravel, alors ça dépends, si ils veulent que tu soit direct opé, c'est pas possible, si tu as le temps de voir les bases chez toi (environ 1-2 semaines c'est suffisant) puis une période d'apprentissage (quelques mois, mais directement sur l'appli, chapoté par un tuteur) alors c'est normal, tu peux pas maitriser Laravel, tu peux juste te faire une base solide avant d'entrer, et c'est au tuteur de faire en sorte que tu maitrises, surtout que c'est une stage, donc le tuteur devrait être plus souple que si tu était en alternance

@ popotte:

Moi perso je voudrais voir un peu de tout dans le backend avant de me jeter dans les API aussi parce que comme je l'ai dit plus haut, les API ont un marché de l'emploi un peu a part de ce que je vois sur les annonces, dans le sens ou c'est bien specifié, c'est pas juste "need backend dev" mais plutot "API consultant", "api dev". Donc je veux surtout pas etre "catalogué" dès le debut de carriere. Moi je voudrais plutot faire de la programmation orientee objet par exemple. J'ai comme l'impression qu'avec les API on ne fait que du http du matin au soir...

Autre chose que je n'aime pas, et ca c'est un peu c'est perso et un peu c'est par rapport au marché du travail, c'est de devoir utiliser php, un langage qui est toujours moins demandé (et moins bien payé) par rapport à d'autres langages comme c# ou java.

Alors tkt pas pour ça, la différence entre le backend classique et l'api c''est uniquement le point d'entrée

En gros en backend tu définis une route vers un controller directement depuis le projet, et dans ton controller tu fait ton backend, une fois que c'est fini tu retournes uune redirection ou une view, quand c'est une api tu définis une route vers un controller accessible depuis l'éxtérieur du projet, et dans ton controller tu fait ton backend, une fois que c'est fini tu retournes un json response :p en gros ça change le point d'entrée et la réponse, mais au milieux dans le gros du taf c'est la même :p

ah ok je comprends mieux tu me rassures, donc en fait faire une experience de 6 mois dans du backend API ca devrait me former aussi a la programmation orientee objet et tout le reste, comme les db. Pour l'instant je bute depuis des heures sur ce probleme avec dbeaver mySql: Access denied for user 'root'@'localhost' (using password: NO).

J'ai cherché l'erreur sur la documentation de dbeaver(tres inutile), et sur les sites specialises mais toujours pas resolu. (parce que oui, mon tuteur de stage m'a demandé de faire un projet en laravel tout seul sans meme me montrer comment on installe l'environnement de dev sur mon pc...). .NET, visual studio ou etes vous (snif snif)

Yep en principe ça devrait être ça, ensuite à voir, si ça se trouve le back est déjà en place pour le web et du coup tu fera juste un branchement entre l'app et le controller :/

Demandes leur si tu mettra en place des nouvelles feature ou alors si c'et l'équipe web qui fera les feature et toi tu fera juste le branchement avec l'app :p

Alors, dbeaver ça plante des fois :) Installes mysql direct et vois si ça passe https://dev.mysql.com/downloads/shell

Ensuite pour le problème d'acces, il y a plusieurs choses, tu as pensé à faire tourner apache (pour localhost)/mysql? Ensuite dans ta config MySQL, tu as bloqué l'acces root? Si c'est le cas alors il faut créer une base, puis créer un user, et enfin donner les acces à cet user, ensuite tes hosts prennent bien en compte "localhost"? Essayes avec 'root'@'127.0.0.1' :p

Faudra checker ton fichier hosts (si localhost est bien branché sur 127.0.0.1) et ta config mysql (voir si t'as le droit de te co en root)

Si rien ne fonctionne, ou alors si t'as pas le temps ou la fleme de checker, kill ton sql et refais en un tout neuf x)

Sinon t'as quelle version de mysql? 8 (mysql) ou 10 (mariadb)?

Ah et rien à voir mais un conseil pour ton taf si t'as le temps: Apprends à utiliser Docker, ultra important si tu sait l'utiliser ta boite va kiffer, et en entreprise tu devra utiliser Docker

D'ailleurs quand tu sera à l'aise avec Docker, tu pourras désinstaller tous tes outils de dev (apache, php, mysql, nodejs...) et faire une image et un proxy Docker

En gros l'avantage c'est que tu dev comme si tu étais sur un serveur de prod :)

Oui je vais devoir demander, parce que si je dois passer mon temps a faire des get et des post non merci (pas que je sais le faire hein xD) mais plus serieusement si c'est vraiment comme ca ca n'a aucune utilite pour moi. Tu peux me montrer un petit exemple de ce fameux 'branchement' entre l'app et le controller stp pour avoir une idee?

Wow ca m'a l'air compliqué tout ca, moi ma config est la suivante:

-wamp: dessus j'ai mysql version 8.0.31 et mariadb 10.10.2 et php 8.2
-dbeaver: j'ai selectionné mysql sans mot de passe, nom d'utilisateur 'root' et port par defaut '3306' qui est le meme que sur wamp

j'ai vu quelques videos youtube ou ils disaient de rajouter au fichier mysql.ini une ligne (me rappelle plus) ce que j'ai fait mais ca n'a rien donné, j'ai essayé de mettre un mot de passe, ca marche pas non plus mais l'erreur est differente. J'ai controllé sur le fichier laravel .env et il a le meme port '3306'.

En gros je vois ma db sur dbeaver mais y a une croix rouge dessus et je peux pas l'ouvrir. Je suis dessus depuis 10h du mat.

Mmmmh en gros la commande pour faire les process fonctionne, par exemple pour faire une réservation d'un truc tu place une route post qui envoies vers un controller qui ajoute une ligne en base de données, et ensuite une redirection, bref ça c'est le dev back, et toi tu devra faire une requete post vers ce controller, et arranger le controller pour dire si l'appel vient d'un post api alors retourner un json

Pour l'exemple d'un branchement:

// Si c'est en PHP
//$client = un client Http, 99.999999999% du temps Guzzle
$response = $client->post(url, {data});

//Si c'est en JS
// souvent axios utilisé
axios.post(url, data)
    .then(response => console.log(response))

// Dans le controller Laravel à la fin

// Ce que tu dois rajouter
if (Request::wantsJson()) {
    return response()->json(['message' => 'ok', 'code' => 200, 'data' => ['tes données ici ci y a besoin']]);
}

// Le retour prévu par Laravel en web
return view('confirmation')->with(['data' => 'des données si y a besoin']);

Ah wamp? et wamp il tournes bien? Tu devrais avoir le client PHPMyAdmin si t'es sur WAMP, essayes de te co sur ce client?

Ah okay, et c'est quelle version qui est séléectionné sur WAMP?

Ah ok merci pour l'exemple. En fait pour les API y a pas beaucoup de lignes de code, c'est souvent concis par rapport à d'autres volets du dev, je me trompe?

oui j'ai phpmyadmin mais je sais pas l'utiliser, j'ai voulu faire avec dbeaver pour reconstruire l'environnement de developpement utilisé par la boite.

pardon mais j'ai pas compris, quelle version de quoi au juste?^^

Yep faire un branchement api il y a un peu plus de code que de simplement faire une route en web, après le gros du taf c'est de mettre en place la feature dans le controller ou dans un Job

Alors tout doit aller vite dans une appli donc y a beaucoup de chances que tu doives faire avec des Job, du coup faudra apprendre, doc Laravel :p

Ah.... Ta boite utilise dbeaver, ok, je juge pas :| (tkt je fais juste mon con*** en vrai c'est bien aussi dbeaver x))

En vrai si tu apprends à utiliser Docker tu pourras leur demander de t'envoyer leur image Docker comme ça t'as rien à configurer et tu lances direct xD (par contre si t'es sur Windows laisses tomber Docker, ç marche que sur Linux et Mac :p, sur Windows c'est uuuultra lent)

Les versions de Mysql, tu as dis que tu as deux version, la 8 ET la 10, mais WAMP n'en séléectionne qu'une seule, il te donne juste la possibilité de selectionner l'une ou l'autre depuis le menu WAMP :p

Oui c'est pour ca que je dois demander au tuteur de stage si c'est nous qui faison les features ou pas, si c'est pas le cas je vois pas l'interet de continuer dans cette boite...

C'est pas ma boite XD, je suis juste stagiaire et vu comment vont les choses et les technos qu'ils utilisent ca m'etonnerait fort que j'en fasse partie un jour lol.

Sur wamp j'ai la version 8.0.31

Yep au moins comme ça t'es sur d'avoir ce qu'il faut pour toi x)

Ahah oui après faut voir, si ils utilisent Docker et AWS/GCP c'est le minimum pour une entreprise respectable x)

Mmmh okay alors deux solu, soit un fichier de config à changer pour autoriser le root, soit faut réinstaller la base :x

Alors oui ils utilisent AWS. Demain je vais tenter de tout refaire sur XAMP

Rien a faire, ca fait 2 jours que j'essaye de creer un nouveau projet mais j'y arrive pas. Trop compliqué a faire entre laravel, composer, php. j'ai reussi a installé en partie laravel mais il me manque le dossier vendor et je ne sais pas comment faire. Je pense serieusement à laisser tomber php/laravel et me concenter sur javascript et .NET.

Quant à la boite ou je fais le stage, j'ai decouvert hier sur linkedin qu'ils avaient publier une offre d'emploi pour developpeur backend: exactement ce que moi je suis sensé faire.... Vu qu'ils veulent me doubler dans le dos je vais me consascrer a autre chose de mon coté.

Si tu ne connais pas pour le moment, en vrai c'est pas déconnant de pas s'y mettre pour le moment et de voir ça plus tard si un jour tu veux apprendre.

Deja que php c'est pas du tout un language qui me plait et de plus il est de moins en moins utilisé, alors galerer pour galerer autant galerer sur une techno d'actualité qui a du potentiel d'embauche. Je pense a l'environnement javascript et .NET

techno d'actualité, potentiel d'embauche

Par contre pas besoin de dire ça, si tu n'aime pas le langage c'est ton droit mais pas la peine de le descendre

ou est ce que tu as vu que je descendais php? j'ai dit que galerer pour galerer autant le faire sur une techno d'actualite et avec un meilleur potentiel d'embauche.

Ici: "sur une techno d'actualite et avec un meilleur potentiel d'embauche." :D

Oui c'est un fait, c'est une realité. Le dire n'est pas une insulte ou une attaque au langage.

Ce n'est pas descendre PHP de dire que JS a un meilleur potentiel d'embauche, c'est ce que dit les stats, moi aussi je le dis et pourtant je suis un dev Laravel x)

Après pour ce qui est du dev CMS, PHP sera toujours en tête de liste avec Wordpress x)

Si tu veux te focaliser sur le potentiel d'embauche, alors apprends ReactJS, et aussi son framework: NextJS, en ce moment c'est React qui a le plus haut potentiel d'embauche, ensuite pour le back alors NodeJS est toujours en tête mais il se fait talloner par Golang, tu devrais essayer parce que Golang devient de plus en plus populaire dans les entreprises :p

Et comme tu es dans une optique entreprise, alors c'est très important d'apprendre le devops, aujourd'hui un dev est obligé d'être un devops aussi pour trouver un taf, du coup t'es obligé d'apprendre Docker et Teraform (si Teraform c'est trop compliqué tu peux apprendre Pulumi à la place, c'est la même chose que Teraform, mais en JS) et tu doit apprendre à utiliser l'env Linux, il y a 10ans tu n'avais besoin que d'apprendre Linux en infra, mais aujourd'hui le métier à évolué ^^'

Sinon pour l'annonce de ta boite, alors toutes les entreprises vont faire la même chose, faut savoir que l'entreprise ne te doit rien, il va toujours faire en sorte d'avoir plusieurs options pour selectionner le meilleur dev

Moi j'aimerais bien faire du backend, donc soit faire du C#.NET ou alors faire du nodesJS, l'avantage avec NodeJS c'est que je n'ai besin que de JS. Donc Oui JS reste une alternative extremement serieuse et credible dans mon plan d'action, surtout que je n'exclue pas totalement le frontend.

Golang par contre je ne connais pas du tout, je sais qu'il est fait par Google mais j'en sais pas plus. C'est difficile comme approche?

@popotte:

j'ai demandé au tuteru de stage sur l'implementation des features, il m'a dit que pour la partie web c'est l'equipe front end qui les fait, et pour les features mobile c'est les developpeurs mobiles. lui ne fait que les API. ca me parait extremement monotonne comme boulot... Son ecran est rempli que de:
route:: post .......
route:: get .......
route:: delete....

Ca m'attire pas trop honnetement vu comme ca. moi je veux implementer les fonctionnalites pas faire des branchements.

Mmmh il devait surement êtree dans le fichier routes.php, c'est pour ça que c'est remplit de Route::... pour la partie web il dit que c'est l'équipe frontend, donc il n y a pas d'équipe back end, il doit y avoir des features à mettre en place je pense, surtout que ton tuteur il doit être payé, si il est présent depuis 2ans au moins il doit mêmme etre payéé autour des 3k/mois, et une boite ne va pas payer un dev pour uniquement faire des routes, tu lui a demandé de te montré un exemple d'une api avec la partie controller console jobs etc... ?

il m'a dit que le code backend quel qu'il soit est composé des routes, qu'il y ait des API ou non car il fonctionne sur la base du protocol http. je lui ai demandé de voit un fichier Controller de l'api pour voir le code, c'est tres court, il y a des public function avec des conditions dedans.

Alors oui c'est normal que tous les controllers soient composés de routes, les routes c'est les points d'entrées entre l'utilisateur et le controller

Mmmmh un controller c'est pas vraiment un bon exemple, c'est normal qu'il soit court, c'est que le code a bien été découpé au contraire c'est c'est bien, il aurait fallu voir un job ou une command, ou un service ^^'

Tu te souvient du contenus du Controller? Tu as vus dans ce controller des new Class? ou alors des Class:dispatch()? ou des Hook::run/handle/call/invoke()?

non je me souviens pas avoir vu ca, je lui ai demandé si il fait de la POO il m'a dit oui, et en effet j'ai vu des "this" qui trainait ci et la. mais pas plus.

Alors ils utilisent Laravel, donc automatiquement ils font de la POO x) (avec cette question ils on du griller que t'as toujours pas vus Laravel par contre ^^')

Ah dac, les controllers avaient quels comportement selon les conditions?

oh tu sais j'ai ete tres clair la dessus, j'ai dit que j'avais jamais touché a php et encore moins a laravel... pour les controllers aucune idee.

Comme exo j'ai a faire des endpoint CRUD et les tester sur postman.

ah dac, donc tu connectes ton endpoint, tu reçoit la requete api en entrée, et dans le projet tu fais quoi? Tu connectes à une feature existance ou bien tu dois faire une action en base de donnée?

Rien du tout. j'arrive meme pas a faire les endpoint CRUD.... Je pige rien de laravel et de eloquent. Pas evident du tout quand on a jamais fait ca. C'est un peu comme un jeunot qui sait deux trucs de c# en applciation desktop tu le balances a faire du asp.net MVC direct. dans mon cas c'est carrement dans un autre language.

Gargotier, je pense que tu es un peu perdu (Comme tout le monde au début). Tout d'abord développer une API n'est qu'une partie de ton métier de dévelopeur. La première qualité d'un développeur est sa curiosité. Si tu n'aimes pas ca, tu rencontreras des difficultés par la suite, notamment sur des architectures d'applications plus complexes type micro-services. Ensuite, commencer ton apprentissage par un Framework est un mauvais choix, quelque soit le language de programmation. Révise ton approche : appprends à coder ton propre Framework... cela te permettra de comprendre les principes de fonctionement des frameworks les plus populaires : POO, injection de dépendances.... Grafikart propose une formation en PHP très bien ficelée sur le sujet. Enfin et surtout .... sors toi des statistiques d'embauche ou des grandes idées telles que "JS ou Go c'est mieux". Ca ne veut rien dire. Vois plutôt l'écosystème du développement comme une boite à outils dans laquelle tu peux piocher suivant tes besoins ou ceux de ton entreprise. Tu commenceras peut être avec du .NET et pour une raison ou une autre tu migreras vers une autre technologie. Le point commmun dans tout ca, c'est que si tu n'as pas des bases sollides, tu accumuleras les lacunes tout au long de ton apprentissage. A l'inverse avec de solides connaissances tu pourras facilement switcher entre les différents outils, et ta valeur marchande sur le marché du travail n'en sera que plus haute. Bon courage dans ton apprentissage !

Bonjour tinmar81,

Je te remercie pour ta contribution, c'est toujours bon d'avoir le retour de personnes experimentees dans le domaine. Toutefois, il faut savoir que ce n'est pas moi qui ai decidé de commencer par un framework. Je te raconte mon parcours:

Moi j'ai commencé il y a presque un an en apprenant en autodidacte la programmation web. j'ai appris le html, css et le javascript. Par la suite je me suis inscrit a une formation sur le .NET ou j'ai appris des choses sur le .NET coté application desktop. Cette formation se conclut par un stage en entreprise et l'entreprise qui m'a pris bosse en laravel et fait du backend web entre autres et ils ont jugé utile de prendre un mec qui n'a jamais fait de php ni de laravel et le balancer dans les API et le systeme MVC. Donc je me suis retrouvé plongé dans cette histoire de laravel alors que je n'avais rien demandé x).

Les débuts sont toujours obscures et les stages parfois plus compliqués qu on ne le pense. Accroches-toi et ne perds pas de vue que choisir une techno sans avoir validé des pré-requis (environement Linux, protocols liés au web - HTTPS, SMTP, NFS..., réseaux, algorythmie) ralentira tôt au tard ta progression lorsque tu devras te confronter à des technologies un peu plus avancées type Docker, Kubernetes ou autres.

Absolument, moi si can e tenait qu'a moi j'aurais continué sur c#.net que j'aime bien et/ou JS que je connais un peu.

Mmmmh en vrai le mmieux ça aurait étéé que tu trouves une entreprise qui cherche un dev C#/.NET parce que la tu es hors de ton domaine, et si tu es complètement perdu et que tu attends de commencer ton stage pour apprendre les bases de PHP et Laravel tu va pas arriver au bout du stage :X

Ah et si tu arrives pas à installer le projet, faut savoir que en entreprise c'est toi qui doit installer l'environnement de dev, on te filera une doc et tu te débrouilles avec ^^'

C'est sur que tu as beaucoup plus d'offres d'emplois en PHP ou JS, faut chercher les offres .NET, et pour les offres JS ce sont des offres React ou Vue :/

Ben oui mais c'est pas moi qui ai choisi, c'est la boite qui m'a pris en accord avec l'institut de formation sinon c'est clair que j'aurais jamais fait ca. C'est un stage de 1 mois et il me reste 2 semaines.... Justement c'est ce que je me suis tué a dire a mon tuteur de stage: apprends moi a installer l'environnement de dev sur mon pc parce que c'est le point de depart! au debut il me disait non c'est inutile je t'ai preparé un environnement utilises le et basta.

Pour les offres de ce que je vois php n'est pas autant demandé que JS, loin de la, pour le .NET faut que je cherche encore oui, de ce que je sais, c'est plutot les grosses boites qui l'utilisent.

Le tuteur m'a confirmé qu'il ne faisait que les API, dans le sens ou c'est le dev frontend qui fait la partie "back" avec React. Lui ne fait que les requetes API. Il m'a dit car sur ce prpojet avec laravel il n'utilise pas le fichier web.php, mais uniquement api.php .

Sincerement je ne sais trop quoi penser...