Your SlideShare is downloading. ×
Api - mix it 2013
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Api - mix it 2013

647
views

Published on

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
647
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Développementpar lAPIMIX-IT 2013Éric Daspet - David Larlet
  • 2. Qui sommes-nous ?Éric Daspet•  TEA, livre num.•  PHP 5 avancé•  Performances web•  Paris-Weberic.daspet.nameDavid Larlet•  scopyleft•  artisan•  geek•  citoyenlarlet.fr/david
  • 3. no-conférencenous nenseignons pas,nous échangeons nos expériences
  • 4. Quabordons-nousPar quoi commencer ?Comment structurer ?Quels formats ?Comment ajouter unenouvelle version ?Que faire des erreurs ?Comment sécuriser ?Comment gérer les spamset les abus ?Comment paginer ?Hypermédia et découverte,késaco ?Quelles autres bonnespratiques ?
  • 5. Par quoicommencer ?Mobile first ?
  • 6. API FirstDabord mener la réflexion sur les donnéeset sur comment elles seront utiliséesPenser lAPI en prenant la place de lutilisateurEt si vous deveniez votre propre utilisateur ?Éventuellement en commençant par le mobileou y brancher des applicatifs indépendants
  • 7. Commentstructurer ?Appel, URL, ressources, hiérarchies
  • 8. StructureREST, fuyez SOAP, évitez le "truc perso"Ne vous limitez pas aux verbes, utilisez HTTPUne ressource = un nom, en minusculeshiérarchies à plat, /ressource/ et /ressource/idprofondeur limitée à /ressource/id/ressourcevs. approche liée (hypermedia)
  • 9. Quel(s)format(s)JSON, ATOM, XML, (x)HTML, RDF,www-form-urlencoded, ...
  • 10. FormatRequêtes : pensez au form-encodedUtilisez des formats standard !Utilisez un format extensible pour plus tardUtilisez une extension de fichier dans lURLDéclarez le format dans les entêtesImposez le format, et le codage (UTF8 svp)
  • 11. Comment faireune nouvelleversion ?v1.2.4-beta
  • 12. VersionnementRestez compatible : même URI, ajout deparamètres optionnels, valeurs additionnellesSi besoin dune nouvelle version :•  uniquement des versions majeures (v1, v2)•  /v2/* en racine du service•  rarement dans le chemin de la ressourcevs. approche liée (hypermedia)
  • 13. Que faire deserreurs ?
  • 14. ErreursUtilisez les erreurs HTTPau minimum 2xx, 3xx, 4xx, 5xxDétail dans le corps du message respectant leformat attenduCode + lien vers laide en ligne correspondantemessage : pour dev ou pour utilisateur final ?différenciez bien les deux
  • 15. Commentsécuriser ?
  • 16. SécuritéUtilisez ce que vous maîtrisezToujours du SSL, toujours valider les certificatsAuth HTTP basic fonctionne très bienAuth déléguée : OAuth 1, attention à OAuth 2Évitez les cookies de session (CRSF)Demandez une clef dapi par applicatif
  • 17. Comment gérerles spams etabus ?
  • 18. SPAM et abusThrottling/métriques•  par IP•  par application (clef dAPI)•  par utilisateurCoûteux en ressources, mais indispensableQuid dimposer de toujours être authentifié ?Limiter la taille des résultatsTimeout contre les requêtes longues
  • 19. Commentpaginer ?
  • 20. PaginationFaire simple ? pas ici, pièges en vueCas simple : sort + order + limit + offsetHypermedia : liens rel=next, rel=prevQuid des nouveaux items entre 2 requêtes ?exemple avec twitter :paramètre since, upto avec une date ou un id
  • 21. Hypermédia etdécouvertes,késaco ?
  • 22. Hypermédia et découverteEnvisager votre API comme votre site Web :navigable, standard, indexable, évolutif.Ne plus fournir des ids mais des liensUtiliser un format qui permette dutiliserlhypertext (pas JSON par exemple)Un point dentrée unique devrait suffire
  • 23. Quelles bonnespratiques ?
  • 24. Bonnes pratiquesSoyez en relation avec vos utilisateursDates au format ISO, *avec* fuseaux horairesUtilisez des codes, pas des messages texteHypermedia : documentez les types de liensAméliorer les performances a posteriori(préchargement des sous-ressources)
  • 25. Pas dequestionsNormalement cest déjà fait :-)Quelques retours sur le format utilisé ?

×