Javascript 如何通过json和节点JS了解对象类型

Javascript 如何通过json和节点JS了解对象类型,javascript,node.js,express,ecmascript-6,Javascript,Node.js,Express,Ecmascript 6,我有一个节点JS Express API,它有一个灵活的端点。该端点将从请求体接收一个JSON,它应该知道它所属的匹配对象 例1: POST /api { "id": 1, "username": "felipe" } POST /api { "price": 15.5, "description": "Product description" } 上面的json应该是用户对象 例2: POST /api { "id": 1, "username": "f

我有一个节点JS Express API,它有一个灵活的端点。该端点将从请求体接收一个JSON,它应该知道它所属的匹配对象

例1:

POST /api
{
   "id": 1,
   "username": "felipe"
}
POST /api
{
   "price": 15.5,
   "description": "Product description"
}
上面的json应该是
用户
对象

例2:

POST /api
{
   "id": 1,
   "username": "felipe"
}
POST /api
{
   "price": 15.5,
   "description": "Product description"
}
上面的json应该是
产品
对象


如何动态地知道从请求接收的对象类型?有什么类型的os模式或其他概念我可以使用吗?

如果您有某种控制权悬停在Json中发送的数据上(例如Mongo文档),那么您可以在发送之前在对象上添加一个“type”行,以便让您的节点服务器检索该数据并按您的意愿处理它。 另一种解决方案是使用不同的路由,如
/api/user
/api/products
,这样您就不需要更改发送的数据,但可能会有大量重复

否则,您无法知道json中的对象类型。

最好的方法是遵循12因素建议等等,但为了实现您的目标,我们有几个选项,我们可以使用它们查询参数

http://localhost:3000/api/v1/end-点?种类=用户

http://localhost:3000/api/v1/end-点?种类=其他选项

从“express”导入express;
从“主体解析器”导入{json,urlencoded};
从“头盔”导入头盔;
从“压缩”导入压缩;
从“cors”进口cors;
const app=express()
应用(头盔());
app.use(compress());
使用(json());
use(urlencoded({extended:true}));
应用程序使用(cors());
app.use('/api/v1/myAwesomeEndPoint',(req,res)=>{
const{kind}=req.query.params;
如果(种类==‘用户’){
//他们需要用户逻辑吗

return res.status(200).send({success:true,message:'您必须在JSON正文中显式编码所需的对象类型。JSON没有“类型”本质上是特性。我能想到的唯一方法是基于收到的密钥。如果存在密钥
描述
,它就是产品,如果存在
用户名
,它就是用户……最好尝试使用typescript并管理json对象的接口(您可以尝试
尝试{json.parse(yourResponse)}catch(e){}
。如果它进行解析,则确定属性是否匹配。我认为这是IMHO的一个解决方法。但它解决了您的问题,我猜Hello@Minirock,问题是项目必须只有一条路由,json对象将永远不会有“type”属性。我想我应该考虑一种通过属性发现对象类型的方法。