构建API时更喜欢哪种方法

时间:2017-07-13 07:02:13

标签: node.js api express

我使用快速框架构建API但目前我需要选择请求/响应方法

有一种使用JSON的方法,因此有人可以发送一个帖子请求,例如使用JSON数据,但这样就无法通过HTML格式发出请求

但是,如果我使用可以通过HTML表单请求的方法,其他开发人员可以使用此API来构建自己的应用程序或客户端

所以我的问题是,在构建API时,哪种方法更好,它是接受JSON请求还是正常请求,如果我的API是为其他开发人员制作的,那么哪种方法更好?

1 个答案:

答案 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>