2017-07-11 3 views
1

Dans les projets précédents j'ai travaillé, notre API prendrait et valider chaque argument POST individuellement par valeur:Qui est préférable d'utiliser des arguments POST ou JSON dans l'API REST?

$username = isset($_POST['username']) ? $_POST["username"] : null; 
$password = isset($_POST['password']) ? $_POST["password"] : null; 

Multidimensional arrays can be a bit tricky this way, though.

Pour un nouveau projet, je suis envisager une approche plus orientée objet, et prendre le JSON nécessaire pour construire des objets au lieu de chaque champ individuel:

$user  = isset($_POST['user'])  ? new User($_POST['user']) : null; 

Quelle pratique est la plus courante, et pourquoi? Y a-t-il des risques de sécurité supplémentaires en utilisant l'un ou l'autre?

+1

Tant que vous êtes en accord, il n'a pas vraiment d'importance. Si une méthode attend un nombre et un autre JSON, cela causera de la confusion. À mon humble avis, JSON est plus à l'épreuve du futur. Si demain vous décidez qu'un nombre ne suffit pas, vous pouvez simplement ajouter un autre paramètre au JSON au lieu de réécrire la méthode entière. –

Répondre

2

Il n'y a aucun avantage de sécurité. Si quelqu'un intercepte la demande, il pourra voir les données du POST, que ce soit dans des arguments différents ou seulement dans le corps. Assurez-vous que vous utilisez SSL pour éviter les regards indiscrets.

En ce qui concerne les arguments JSON body vs POST, cela dépend vraiment de la façon dont vous allez utiliser l'API. Allez-vous utiliser un framework JS frontal ou jQuery? Alors JSON sera probablement plus facile pour vous. Est-ce que votre API retourne JSON? Ensuite, il devrait probablement accepter JSON aussi. N'oubliez pas que vous pouvez toujours gérer différents types de contenu basés sur l'en-tête Content-Type!

1

Pour le développement API REST, je préfère utiliser JSON comme Demande (que des arguments POST) et Réponse.

Pour le client, la création d'une requête json n'est pas difficile. Toutes les langues ont le support JSON maintenant.

Et pour le côté serveur (PHP), récupérer JSON dans la requête de corps n'est pas difficile aussi.

// $data will be array of data 
$data = json_decode(file_get_contents('php://input'), true); 

Et en utilisant JSON pour les deux Demande et Réponse, fera API Documentation facile à lire.

Et pour la section de sécurité, il n'y a pas autant que je sache problème à l'aide JSON à la demande du corps,