Создайте конечную точку API, способную принимать запросы POST от webhook в Java - PullRequest
0 голосов
/ 16 октября 2018

У меня есть настройка webhook, где после загрузки файловый сервер отправляет уведомление на URL-адрес Webhook Tester, используя HTTP POST.В файле конфигурации webhook URL-адрес Webhook Tester назначается в качестве конечной точки.Например, когда файл с именем image1.jpg загружается в корзину с именем images на сервере minio, я получаю данные JSON, подобные этим, в конечной точке Webhook Tester:

{
"EventName": "s3:ObjectCreated:Put",
"Key": "images/image1.jpg",
"Records": [
{
  "eventVersion": "2.0",
  "eventSource": "minio:s3",
  "awsRegion": "",
  "eventTime": "2018-10-16T05:53:23Z",
  "eventName": "s3:ObjectCreated:Put",
  "userIdentity": {
    "principalId": "EZXTCHKE2YHUNRPI8JCL"
  },
  "requestParameters": {
    "sourceIPAddress": "127.0.0.1"
  },
  "responseElements": {
    "x-amz-request-id": "155E00FBBE5DC52B",
    "x-minio-origin-endpoint": "http://127.0.0.1:9000"
  },
  "s3": {
    "s3SchemaVersion": "1.0",
    "configurationId": "Config",
    "bucket": {
      "name": "images",
      "ownerIdentity": {
        "principalId": "EZXTCHKE2YHUNRPI8JCL"
      },
      "arn": "arn:aws:s3:::images"
    },
    "object": {
      "key": "image1.jpg",
      "size": 374960,
      "eTag": "eeee5654de91dd9295590449405b4a2c",
      "contentType": "image/jpeg",
      "userMetadata": {
        "content-type": "image/jpeg"
      },
      "versionId": "1",
      "sequencer": "155E00FBBE5DC52B"
    }
  },
  "source": {
    "host": "",
    "port": "",
    "userAgent": "Minio (linux; amd64) minio-go/v6.0.6 mc/2018-09-26T00:42:43Z"
  }
}
]
}

Как я могу реализоватьчто-то вроде этого в jax-rs?Как я могу создать конечную точку API, способную обрабатывать запросы POST, аналогично Webhook Tester, который генерирует данные JSON?

1 Ответ

0 голосов
/ 16 октября 2018

Мне удалось сделать это, создав обработчик POST-ресурса, например так:

@POST
@Path("webhook")
@Produces(MediaType.APPLICATION_JSON)
public Response webhookListener(NotificationConfiguration nc) throws JsonProcessingException {
    ObjectMapper mapper = new ObjectMapper();
    String jsonString = mapper.writeValueAsString(nc);
    System.out.println(jsonString);
    return Response.ok().entity(jsonString).build();
}

NotificationConfiguration - это тип данных, с помощью которого сервер minio отправляет уведомления webhook, и с помощью jackson я преобразовал NotificationConfiguration в JSON, таким образом получая желаемые данные JSON.

...