How to add resource and specify related element?

50 Views Asked by At

I have a simple API for a game tip website:

  • /class is the endpoint for in game classes
  • /tip is the endpoints for the tips
  • /user is the endpoint for the users

Each tip has 3 relations:

  • (:User)-[:AUTHORED]-(:Tip)
  • (:Class)<-[:FOR]-(:Tip)
  • (:Class)<-[:AGAINST]-(:Tip)

When I create a Tip using POST, I do'nt know how to add relations at the create time.

I can do this way: Add relation to another node in SDN4 + REST after creating the resource, but I want to do it with only one query.

EDIT: I tried to POST this:

'{"content":"TEST", "forClass":"/class/2", "againstClass":"/class/2"}'

and the item has been created, no InvalidArgument Exception raised, but if I go to my class resource's tips, I don't have any tips:

GET /class/2/tips:

{
  "_embedded" : {
    "tip" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/class/2/tips"
    }
  }
}

GET /tip/9 (the created one):

{
  "content" : "TEST",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/tip/9"
    },
    "tip" : {
      "href" : "http://localhost:8080/tip/9"
    },
    "author" : {
      "href" : "http://localhost:8080/tip/9/author"
    },
    "againstClass" : {
      "href" : "http://localhost:8080/tip/9/againstClass"
    },
    "forClass" : {
      "href" : "http://localhost:8080/tip/9/forClass"
    }
  }
}

GET /tip/9/forClass:

{
  "name" : null,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/class/2"
    },
    "bnSClass" : {
      "href" : "http://localhost:8080/class/2"
    },
    "tips" : {
      "href" : "http://localhost:8080/class/2/tips"
    }
  }
}
0

There are 0 best solutions below