微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。