在我之前的项目中,我们的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;
哪种做法更常见,为什么?是否存在使用其中一种的额外安全风险?
答案 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
没有问题,