Как добавить адрес местоположения в kotlin к построителю заголовка в ResponseEntity - PullRequest
0 голосов
/ 09 ноября 2019

Мне нужно настроить адрес для перенаправления при получении статуса 302. Я искал много страниц без результата для реализации, которую мы имеем. Так как настроить адрес и где в этом коде?

Я пытался как-то, но я не уверен, что это нормально.

override fun getDocumentContent(
        @PathVariable repository: String,
        @PathVariable dmsId: String,
        @RequestParam version: String?
    ): ResponseEntity<Resource> {

        val content: DocumentContent = documentService.getDocumentContent(repository, dmsId, version)
        val encodedFilename = URLEncoder.encode(content.filename, "UTF-8").replace("+", " ")
        return try {
            ResponseEntity
                .ok()
                .contentType(MediaType.parseMediaType(content.contentType!!))
                .header(
                    HttpHeaders.CONTENT_DISPOSITION,
                    // sets filename twice for interoperability of multiple browsers
                    """attachment; filename="$encodedFilename"; filename*="UTF-8''$encodedFilename""""
                )
                .header(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION)
                .body(ByteArrayResource(content.data!!))
        } catch (e: GeneralErrorException) {
            val location = toString("documents/err/$dmsId?errMsg=Klient / ESSO nenalezen/a.")
            ResponseEntity
                .status(HttpStatus.FOUND)
                .header(HttpHeaders.LOCATION, webApiLinkBuilder
                    .build(methodOn(DocumentsController::class.java)
                        .getDocumentContent(repository, dmsId, version), Backends.DOC))
                .header(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.LOCATION, location)
                .build()
        }
    }
...