我使用快速框架构建API但目前我需要选择请求/响应方法
有一种使用JSON的方法,因此有人可以发送一个帖子请求,例如使用JSON数据,但这样就无法通过HTML格式发出请求
但是,如果我使用可以通过HTML表单请求的方法,其他开发人员可以使用此API来构建自己的应用程序或客户端
所以我的问题是,在构建API时,哪种方法更好,它是接受JSON请求还是正常请求,如果我的API是为其他开发人员制作的,那么哪种方法更好?
答案 0 :(得分:0)
首先让我们给你一些背景知识,然后我会进行具体的回答。
您正在使用Express以解析请求正文,您将使用正文解析器。参见:
通过使用来自HTML表单的格式的JSON和数据发送请求,您可以查看一些可以测试的示例。
使用表单编码的示例请求:
curl -X POST localhost:4443 \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'a=X&b=Y'
(这是一个可以放在一行而没有反斜杠的命令)
使用JSON编码的示例请求:
curl -X POST localhost:4443 \
-H 'Content-type: application/json' \
-d '{"a":"X","b":"Y"}'
(同样这也是一个命令 - 为了便于阅读而放在多行上)
现在,可以响应这些请求的服务器代码:
这是一个接受JSON的服务器:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.post('/', (req, res) => {
console.log(req.body);
res.json({ ok: true });
});
app.listen(4443, () => console.log('Listening on http://localhost:4443/'));
这是一个接受表单数据的服务器:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/', (req, res) => {
console.log(req.body);
res.json({ ok: true });
});
app.listen(4443, () => console.log('Listening on http://localhost:4443/'));
这是一个同时接受以下两者的服务器:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/', (req, res) => {
console.log(req.body);
res.json({ ok: true });
});
app.listen(4443, () => console.log('Listening on http://localhost:4443/'));
正如您所看到的那样,支持这两种风格是微不足道的,您不需要只选择其中一种。
现在,针对您的具体问题:
所以我的问题是,在构建API时,哪种方法更好,它是接受JSON请求还是正常请求,如果我的API是为其他开发人员制作的,那么哪种方法更好?
作为开发人员,我个人更喜欢使用JSON,但如果需要,我可以理解使用表单编码的必要性。使用Express,它很容易同时支持,因此您不必只选择一个。
但如果您出于某种原因只想选择一个,那么请与您的开发人员交谈。这些是您的API的消费者,因此他们是唯一可以告诉您更好的"更好的人。#/ p>