recherche

Maison  >  Questions et réponses  >  le corps du texte

android - APP接口开发的字段暴露问题

刚从web开发转到APP接口开发,遇到了一个问题:
在服务器向APP返回数据时,是否需要遵循‘只返回需要的字段’的习惯?
例如我们有个产品表,结构如下
|---ID---|--名称--|--链接--|--日利率--|--月利率--|--购买人数--|--成功率--|

在产品列表页面的时候,只需要ID,名称,链接这三个数据,其他字段在此页面不需要,那么服务器返回数据的时候,是否一定不能把其他在本页面不需要的字段暴露给APP?

如果每次都返回所有字段,后端这边会节省时间和代码量。但是如果返回所有,由于一个表60+的字段,对网络请求和相应速度有影响。


补充一下,该数据在多个地方都在用,每个地方所需要的字段都不太一样,如果从复用的角度看,几乎就是需要返回所有字段。。那么是选择返回所有以便于复用还是每个接口单独设计接口返回字段呢?

巴扎黑巴扎黑2771 Il y a quelques jours552

répondre à tous(7)je répondrai

  • 大家讲道理

    大家讲道理2017-04-18 09:51:53

    Retournez si nécessaire, fusionnez et intercédez, et réutilisez dans plusieurs scénarios.
    Dans des circonstances normales, tous les retours sont renvoyés à l'aide d'alias et les champs de la base de données ne peuvent pas être exposés.

    répondre
    0
  • 高洛峰

    高洛峰2017-04-18 09:51:53

    Cela consomme trop de trafic et les utilisateurs seront mécontents.

    La base de données n'a-t-elle pas de vue ? Vous y ajoutez une vue basée sur la table des produits et affichez uniquement les champs obligatoires.

    Copiez et collez SQL ou quelque chose du genre, remplacez le nom de la table par le nom de View (puis supprimez les champs inutiles dans l'instruction SQL) et c'est presque suffisant.

    Cela ne prend vraiment pas beaucoup de temps et le code n’a pas besoin d’être beaucoup modifié. Ce type de vue qui couvre uniquement les champs est aussi rapide que le vol et n'affectera guère les performances du serveur.

    répondre
    0
  • 阿神

    阿神2017-04-18 09:51:53

    Cela dépend de la situation

    • Regardez la réutilisation de cette interface : si une interface est réutilisée à plusieurs endroits, mais que la structure des données de réponse n'est pas très différente, renvoyez-les simplement toutes

    • Théoriquement, plus la quantité de données renvoyées est petite, mieux c'est

    répondre
    0
  • 阿神

    阿神2017-04-18 09:51:53

    Même si je n'en ai pas entendu parler遵循, je pense que le retour à la demande est le meilleur moyen de réduire les IO. Non seulement l’expérience utilisateur est bonne, mais la pression sur le serveur est également moindre.

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:51:53

    Personnellement, le backend ne doit généralement pas renvoyer directement les champs de la base de données. Il est préférable d'exposer uniquement les données requises.

    Il est très paresseux pour le backend de renvoyer directement les champs de la base de données. S'il s'agit d'un backend Web utilisé en interne, la base de données n'est pas compliquée et les données renvoyées ne sont pas utilisées par plusieurs clients. que c'est simple et rapide. D'autres situations ne doivent pas être utilisées. Par exemple, s'il existe de nombreux champs de table, l'interrogation de tous les champs réduira les performances ; les API appelées vers les utilisateurs finaux peuvent divulguer certaines informations sensibles si elles renvoient directement la structure de la table appelée par plusieurs clients (Web, ios, android, utilisateurs tiers, etc.), une structure de données bien conçue est requise.

    En fait, le ORM du framework back-end peut généralement limiter les champs renvoyés, ou vous pouvez alias le nom du champ Écrivez simplement quelques lignes de code dans Model pour le faire. Si vous avez besoin d'un meilleur contrôle sur les champs renvoyés, vous devez utiliser transformer :

    • php : Fractale

    • python : guimauve

    • ruby : sérialiseurs ActiveModel

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:51:53

    Je pense que cela dépend si le client a besoin de fusionner les demandes. En fait, ce qui vous inquiète, ce ne sont que quelques octets, et vous ne renvoyez pas de données en streaming telles que des images dans le lien. sur les problèmes de trafic, qui sont souvent consommés par le client, tous sont basés sur l'établissement de liens avec le serveur à plusieurs reprises.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 09:51:53

    La meilleure méthode est la suivante :
    1. Les noms de colonnes qui doivent être renvoyés sont fournis par le front-end
    2 L'interface côté serveur est écrite de manière universelle et le SQL est épissé. ​selon les noms de colonnes fournis par le front end

    ps : Bien que cette conception soit gênante au début, elle est très pratique pour l'expansion des fonctions à un stade ultérieur

    répondre
    0
  • Annulerrépondre