0

grails で安らかなサービスを使用しています。私は2つのクラスを持っていますPerson

import grails.rest.Resource
@Resource(formats=['json', 'xml'])

class Person {
   String name 
   Address address 

    static constraints = {
             }
           }

そしてAddress_

  import grails.rest.Resource
  @Resource(formats=['json', 'xml'])
  class Address {

    String house
    static constraints = {
    }
  } 

ブートストラップでは、次のように新しい人物エントリを作成できます

new Person(name:"John" , address: new Address(house:"John Villa").save()).save();

しかし問題は、JSON データを含む POST リクエストを使用して同じことをしたいということです。UrlMappings.Groovy を次のように設定します

"/app/person"(resources: "person",  includes: ['index', 'show', 'save', 'update', 'delete', 'create', 'patch'])

"/app/address"(resources: "address",  includes: ['index', 'show', 'save', 'update', 'delete', 'create', 'patch'])

次に、JSONデータを使用して「/ app/person」にPOSTリクエストを送信して、POSTMANレストクライアントを使用してみました

{
   "name":"john" ,
   "address": "{'house' :'sample address' }"
}

しかし、エラー 422 unprocessable entity が発生します。

JSON を使用して同じことを行うにはどうすればよいですか? POST メソッドと PUT メソッドを使用して、挿入と更新の両方を行いたいと考えています。

4

2 に答える 2

0

問題は、送信している JSON にあります。これは有効な JSON ですが、リソースの正しい表現ではありません。JSON は次のようになります。

{
   "name":"john",
   "address": 
   {
      "house":"sample address"
   }
}

上記からわかるように、addressプロパティは実際にはネストされたオブジェクトであり、String送信しているようなものではありません。

于 2015-06-27T16:00:38.507 に答える