Node.JS:Javascript 类 VS REST API 中没有类

问题描述

我正在使用 Node.JS 和 AWS Lambda 开发 REST API,它将被 3 个应用程序访问。

  1. 使用 Flutter 开发的 Android 应用
  2. 使用 Flutter 开发的 iOS 应用
  3. 使用 Java 开发的网络应用

我一直是一个Java人,从来都不是一个Javascript人。这是我第一次认真对待 Javascript 的工作。

通常,当我们在 Java 中创建 REST API 时,它会从数据库获取数据,将其转换为 Java 类并将其作为 response 发送回来。

举个例子,假设下面是我的数据库表的结构。仔细查看名称以及相关联的 foreign keys

enter image description here

在我基于 Java 的 REST API 中,这将是类。

public class SellerSettings  implements java.io.Serializable {


     private Integer idsellerSettings;
     private User user;
     private double responseRate;
     private double responseTime;
     private boolean isavailable;

    public SellerSettings() {
    }

   
    public Integer getIdsellerSettings() {
        return this.idsellerSettings;
    }
    
    public void setIdsellerSettings(Integer idsellerSettings) {
        this.idsellerSettings = idsellerSettings;
    }
    public User getUser() {
        return this.user;
    }
    
    public void setUser(User user) {
        this.user = user;
    }
    public double getResponseRate() {
        return this.responseRate;
    }
    
    public void setResponseRate(double responseRate) {
        this.responseRate = responseRate;
    }
    public double getResponseTime() {
        return this.responseTime;
    }
    
    public void setResponseTime(double responseTime) {
        this.responseTime = responseTime;
    }
    public boolean getIsavailable() {
        return this.isavailable;
    }
    
    public void setIsavailable(boolean isavailable) {
        this.isavailable = isavailable;
    }
}

当从使用 Java 构建的 API 请求数据时,它将使用您在我提供的 java 类中看到的相同名称集发送回响应。由于 user 是另一个类,它实际上也会添加该字段..

无论如何,这是我现在的 node.js 代码

const MysqL = require('MysqL');
const con = MysqL.createConnection({
  host     : "*******.rds.amazonaws.com",user     : "****",password : "*****",port     : 3306,database : "*****"
});

exports.lambdahandler = (event,context,callback) => {

    // allows for using callbacks as finish/error-handlers
    context.callbackWaitsForEmptyEventLoop = false;
    const sql = "select * from seller_settings";
    con.query(sql,function (err,result) {
      if (err) throw err;
  
      var response = {
          "statusCode": 200,"headers": {
              "Content-Type": "application/json"
          },"body": JSON.stringify(result),"isBase64Encoded": false
      };
      callback(null,response)
    });
  };

它返回下面

[
    {
        "idseller_settings": 1,"iduser": 1,"response_rate": 90,"response_time": 200,"isavailable": 0
    },{
        "idseller_settings": 2,"response_rate": null,"response_time": 210,"isavailable": 0
    }
]

它只是纯粹的表名。

作为一名 Java 人员,我研究了如何将这些名称转换为 Java 之类的名称。然后我找到了Javascript classes。但是我确实明白 Javascript 不是面向对象的 Java 或任何类似的东西。它在 OOP 上并不完美。还要添加这些类,将值从 JSON 转换为类,然后将其发回,这对于我简单、漂亮的 Node.JS 代码来说似乎是一种过度杀戮。

作为一个 Java 人,我会问,

  1. 当通过 REST API 请求时,按照列名从数据库表中获取数据并将其发送回 Javascript 世界是否正常?还是应该创建类?
  2. 我的移动和网络应用在他们的语言中使用 classes,在发送 POST 请求时,他们很可能会发送一个 JSON,其中包含我共享的 Java 类变量。从 node.js 端,这可以转换为表名吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)