哪个更好在REST API中使用POST参数或JSON?

时间:2017-07-11 06:33:35

标签: php json rest api-design

在我之前的项目中,我们的API将按值分别验证每个POST参数:

$username   = isset($_POST['username']) ? $_POST["username"] : null;
$password   = isset($_POST['password']) ? $_POST["password"] : null;

Multidimensional arrays can be a bit tricky this way, though.

对于一个新项目,我考虑采用更加面向对象的方法,并采用构造对象而不是每个单独字段所需的JSON:

$user       = isset($_POST['user'])     ? new User($_POST['user']) : null;

哪种做法更常见,为什么?是否存在使用其中一种的额外安全风险?

2 个答案:

答案 0 :(得分:2)

没有任何安全优势。如果有人拦截了请求,那么他们将能够看到POST数据,无论是在不同的参数中还是只是在正文中。

确保使用SSL以防止窥探。

就JSON主体与POST参数而言,它实际上取决于您将如何使用API​​。你打算使用前端JS框架还是jQuery?那么JSON可能对你来说更容易。您的API是否返回JSON?那么它也应该接受JSON。

请记住,您始终可以根据Content-Type标题处理不同的内容类型!

答案 1 :(得分:1)

对于开发REST API,我更喜欢使用JSON作为请求(比POST参数)和响应

对于客户端,制作json请求并不困难。现在所有语言都支持JSON

对于服务器端( PHP ),在正文请求中检索JSON也不困难。

// $data will be array of data
$data = json_decode(file_get_contents('php://input'), true);

请求响应使用JSON,将使API文档易于阅读。

对于安全部分,AFAIK在正文请求中使用JSON没有问题,