Aem 如何使CQ5返回JSON格式的响应?
以下Aem 如何使CQ5返回JSON格式的响应?,aem,Aem,以下curl命令在CRX中创建一个节点: curl -u admin:admin \ -F”jcr:primaryType=nt:unstructured” \ -F”sling:resourceType=foo/bar” ... http://localhost:4502 但是,CQ5以HTML格式返回响应: <html> <head> <title>Content modified ...</title> <
curl
命令在CRX中创建一个节点:
curl -u admin:admin \
-F”jcr:primaryType=nt:unstructured” \
-F”sling:resourceType=foo/bar” ... http://localhost:4502
但是,CQ5以HTML格式返回响应:
<html>
<head>
<title>Content modified ...</title>
</head>
<body>
<h1>Content modified ...</h1>
...
<p><a href="">Go Back</a></p>
<p><a href="...">Modified Resource</a></p>
<p><a href="/etc/tags/...-keywords">Parent of Modified Resource</a></p>
</body>
</html>
内容修改。。。
内容修改。。。
...
有没有一种方法可以精心设计请求,使响应采用JSON格式?,CQ基于此,根据请求的Accept标头选择输出格式:
$ curl -u admin:admin -s -H"Accept:application/json" -Ftest=ok http://localhost:8080/tmp | jq .
{
"referer": "",
"changes": [
{
"argument": "/tmp",
"type": "created"
},
{
"argument": "/tmp/test",
"type": "modified"
}
],
"path": "/tmp",
"location": "/tmp",
"parentLocation": "/",
"isCreate": true,
"status.code": 201,
"status.message": "Created",
"title": "Content created /tmp"
}
在CQ中也应该如此
根据Sling,您还可以使用http equiv accept请求参数而不是accept头。CQ基于该参数,根据请求的accept头选择输出格式:
$ curl -u admin:admin -s -H"Accept:application/json" -Ftest=ok http://localhost:8080/tmp | jq .
{
"referer": "",
"changes": [
{
"argument": "/tmp",
"type": "created"
},
{
"argument": "/tmp/test",
"type": "modified"
}
],
"path": "/tmp",
"location": "/tmp",
"parentLocation": "/",
"isCreate": true,
"status.code": 201,
"status.message": "Created",
"title": "Content created /tmp"
}
在CQ中也应该如此
根据Sling,您还可以使用http equiv accept请求参数而不是accept头。CQ基于该参数,根据请求的accept头选择输出格式:
$ curl -u admin:admin -s -H"Accept:application/json" -Ftest=ok http://localhost:8080/tmp | jq .
{
"referer": "",
"changes": [
{
"argument": "/tmp",
"type": "created"
},
{
"argument": "/tmp/test",
"type": "modified"
}
],
"path": "/tmp",
"location": "/tmp",
"parentLocation": "/",
"isCreate": true,
"status.code": 201,
"status.message": "Created",
"title": "Content created /tmp"
}
在CQ中也应该如此
根据Sling,您还可以使用http equiv accept请求参数而不是accept头。CQ基于该参数,根据请求的accept头选择输出格式:
$ curl -u admin:admin -s -H"Accept:application/json" -Ftest=ok http://localhost:8080/tmp | jq .
{
"referer": "",
"changes": [
{
"argument": "/tmp",
"type": "created"
},
{
"argument": "/tmp/test",
"type": "modified"
}
],
"path": "/tmp",
"location": "/tmp",
"parentLocation": "/",
"isCreate": true,
"status.code": 201,
"status.message": "Created",
"title": "Content created /tmp"
}
在CQ中也应该如此
根据Sling的说法,您还可以使用一个http equiv accept请求参数而不是accept头。我不确定是否有,但似乎上面页面唯一真正有用的部分是状态代码(
201
),如果您不在浏览器中查看,错误页面是否提供了JSON中所需的更有用的内容?@anotherdave为了简化这个问题,我已经从上面的输出中排除了一些内容,但回答中包含了一个包含一些潜在有用信息的
部分。我不确定是否有,但似乎上面页面唯一真正有用的部分是状态代码(在本例中为201),如果您不在浏览器中查看,那么错误页面是否提供了JSON中所需的更有用的内容?@另外Dave为了简化这个问题,我从上面的输出中排除了一些内容,但是响应中包含了一个包含一些潜在有用信息的
部分。我不确定是否有,但似乎上面页面唯一真正有用的部分是状态代码(201
),如果您不在浏览器中查看,错误页面是否提供了JSON中所需的更有用的内容?@anotherdave为了简化这个问题,我已经从上面的输出中排除了一些内容,但回答中包含了一个包含一些潜在有用信息的
部分。我不确定是否有,但似乎上面页面唯一真正有用的部分是状态代码(在本例中为201),如果您不在浏览器中查看,那么错误页面是否提供了JSON中所需的更有用的内容?@另外Dave为了简化这个问题,我从上面的输出中排除了一些内容,但是响应包含一个
部分,其中包含一些潜在的有用信息。