2012-06-25 1 views
1

Je commence à utiliser REST et j'ai commencé à créer ma première application en suivant ce modèle de conception. De ce que je peux rassembler l'idée est de construire votre service comme une API dont votre site Web lui-même est un consommateur.Configuration d'un service Web RESTful

Cela a du sens pour moi, car mon application web fait beaucoup d'appels AJAX, mais il semble un peu inutile d'authentifier chaque demande pour éviter d'utiliser des sessions. Est-ce juste quelque chose que je dois accepter dans le cadre du processus de conception REST?

En outre, faire des appels ajax fonctionne bien, mais disons, je dois juste montrer une vue du profil des utilisateurs, cela signifie-t-il maintenant que je dois faire un appel curl à mon api pour tirer ces données. À ce stade, je sais que je travaille en interne, l'authentification est-elle nécessaire?

Répondre

1

Quelques remarques:

Pendant que vous pouvez configurer votre application tout d'avoir une interface REST , vous devriez mettre en place pour toujours être en mesure de l'appeler en interne. L'appeler à partir de HTTP, et obtenir des résultats par HTTP est seulement un traitement d'entrée, et un rendu de sortie. Donc, si vous séparez ces préoccupations, vous obtenez un flux: input-processing -> method call -> data return -> data rendering. Rasage du premier & dernier bit, qu'est-ce qu'il vous reste? Un appel de fonction qui renvoie des données, que vous pouvez simplement utiliser dans votre code. Fonctionnalité distincte pour traduire un appel de fonction «externe» en appel «interne» et rendre les données «internes» en «externes» (xml, json, html, tout ce que vous désirez), rend votre application efficace et reste totalement compatible avec REST.

L'authentification est nécessaire si vous autorisez les appels externes, même si vous ne dites pas aux autres utilisateurs que les données peuvent être récupérées d'une certaine manière, elles sont toujours facilement détectables. Je ne sais pas pourquoi vous ne voudriez pas utiliser des sessions pour cette authentification (ce qui se produit probablement dans la traduction mentionnée ci-dessus d'un appel "extérieur" à un interne. mais il n'y a aucune raison pour laquelle vous ne pouvez pas autoriser plusieurs méthodes d'authentification (session, ré-authentification sur chaque requête, jetons, etc.)

0

Typiquement, je préfère produire une interface qui peut être appelée en utilisant PHP standard, puis ajouter une interface à celle-ci qui ajoute l'authentification et l'accès RESTful. Ainsi, vous pouvez accéder par exemple:

http://example/api/fetchAllFromUsers?auth-key=XXXXX 

Ce qui se traduit par:

$internalInterface = new Api(); 
$internalInterface->fetchAllFromUsers(); 
0

Au lieu de s'authentifier à chaque fois, enregistrez un morceau d'état (dans, par exemple, un cookie) qui identifie votre session, et l'utiliser. Il devient alors soit un paramètre à un GET (en utilisant la syntaxe ?name-value) ou peut être une partie de l'URI lui-même, par exemple

http://example.com/application/account/ACCTNO/TOKEN 

ACCTNO et TOKEN identifient respectivement le compte et la session authentique. Cela peut sembler un peu flou au début, mais cela signifie que votre application, à mesure qu'elle s'agrandit, n'a jamais besoin d'un équilibrage de charge compliqué avec l'état de session, etc. - un schéma de proxy simple fonctionne bien. Cela réduit la complexité architecturale par des montants énormes.