как настроить контроллер для ответа в виде обычного текста в Grails - PullRequest
0 голосов
/ 24 февраля 2020

Мне нужно создать API для мониторинга, и для этого нужно, чтобы ответ был простым текстом, а не json или xml

Что я сделал:

проверил мой приложение, которое содержит текст:

 types:
        all: '*/*'
        atom: application/atom+xml
        css: text/css
        csv: text/csv
        excel: application/vnd.ms-excel
        xlsx: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
        form: application/x-www-form-urlencoded
        html:
          - text/html
          - application/xhtml+xml
        js: text/javascript
        json:
          - application/json
          - text/json
        multipartForm: multipart/form-data
        pdf: application/pdf
        rss: application/rss+xml
        text: text/plain
        hal:
          - application/hal+json
          - application/hal+xml
        xml:
          - text/xml
          - application/xml

добавлено в мой контроллер: static responseFormats = ['all'], пробовал также static responseFormats = ['text']

в моем методе сделал:

respond mystring, formats:['text']

Но все же Grails пытается преобразовать его в JSON и выдает ошибку http 406

Как я могу настроить свой контроллер для работы с простым текстом

Спасибо

1 Ответ

0 голосов
/ 25 февраля 2020

Я выясняю, как это сделать, я использовал рендер вместо ответа в моем методе, который решил проблему, все еще не уверен, почему это невозможно с ответом

class MonitorApi4Controller {

   static responseFormats = ['text']
   static allowedMethods = [ monitorScrape: "GET"]

   MonitorService getMonitorService(){
       return ApplicationContextHolder.getBean('monitorService')
   }

   def monitorScrape(){
       def message = getMonitorService().serviceMethod()
       render message
   }
}
...