2016-10-22 6 views
2

Я пытаюсь отправить данные JSON в контроллер, но контроллер печатает его как null.не может получить данные json в контроллер, контроллер показывает запрос JSON как null;

Ниже содержание моего кода контроллера:

@Transactional 
def save(User user) { 

    println "${request.JSON}" 
    println "${request.JSON.owner}" 
    println request.format 
    user = new User(request.JSON) 

    if (user == null) { 
     transactionStatus.setRollbackOnly() 
     render status: NOT_FOUND 
     return 
    } 

    if (user.hasErrors()) { 
     transactionStatus.setRollbackOnly() 
     respond user.errors, view:'create' 
     return 
    } 

    user.save flush:true 

    respond user, [status: CREATED, view:"show"] 
} 

Я попробовал все дал по этой ссылке Grails send request as JSON and parse it in controller

URL отображения:

post "/user/"(controller: "user",parseRequest:true, action:"save") 

Когда я пытаюсь это:

curl --data '{"owner":"new owner"}' --header "Content-Type: application/json" http://localhost:8080/user/ 

я получаю выход как:

{"message":"Property [owner] of class [class com.sample.User] cannot be null","path":"/user/index","_links":{"self":{"href":"http://localhost:8080/user/index"}} 

Это выход из контроллера:

[:] 
null 
json 

Я создал приложение, используя профиль покоя апи,

Контроллер принимает "/ html текст" Тип для операции «POST», но не JSON , и я могу обновить существующий объект с помощью JSON в качестве типа содержимого.

Моего класс домен имеет три поля

String owner 
String category 
Boolean deleted = false 

Я использую почтальон для отправки запросов в формате JSON.

{ 
    "owner":"some user", 
    "category":"rule01" 
} 

Что я делаю неправильно?

+0

Какая версия Grails? –

+0

Я использую grails 3.2.1 –

+0

Опубликуйте дамп ваших 'params'. –

ответ

0

[Изменено]

Хорошо, мы идем понемногу; попробуйте этот URL в вашем браузере

http://localhost:8080/user/save?owner=the+beautiful&category=homo+sapiens 

с этим кодом ниже,

@Transactional 
def save() {  
    println params.owner 
    println params.category 

    render (params as JSON) 
} 

и пост здесь, все, что вы получите в браузере.

+0

Пробовал это .. все еще получая как «null» –

+0

Каков результат, когда вы выполняете 'println params'? –

+0

Я получаю «нуль» как вывод, когда я печатаю –