問題
- など、Swagger UIからPUTメソッドを実行した場合(これはUIから生成されるリクエストです):
url -X 'PUT' \
'http://localhost:8080/o/headless-delivery/v1.0/documents/183873/permissions' \
-H 'accept: application/json' \
-H 'Content-Type: */*' \
-H 'x-csrf-token: a5GuDT5U' \
-d '[
{
"actionIds": [
"UPDATE",
"VIEW"
],
"roleName": "Site Member"
}
]'
JSONが正しいのに、以下のような400レスポンスステータスが表示されます:
{
"status": "BAD_REQUEST",
"title": "Input is invalid JSON"
}
Environment
- Liferay DXP 7.4
解決策
- これは、Swagger UIに既存のバグがあり、Content-Typeが正しく生成されないために起こります。 https://issues.liferay.com/browse/LPS-163167で修正される予定です。
- 現在の回避策は、Postmanのようなツールを使ってリクエストを行い、 Content-Type ヘッダーを application/jsonと定義することです:
curl -X 'PUT' \
'http://localhost:8080/o/headless-delivery/v1.0/documents/43919/permissions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-u 'test@liferay.com:test' \
-d '[
{
"actionIds": [
"UPDATE",
"VIEW"
],
"roleName": "Site Member"
}