Des problèmes avec un POST/PUT Json Reposant demande Graal
Salut j'ai un grain reposant code. Je ne parfait un Json obtenir et de supprimer la demande.
Mon problème est le suivant:
Je veux faire une requête Put ou post avec json mais si j'utilise un programme pour faire ce qu'Il a une erreur et je ne peux pas le faire!
Voici mon code:
Une classe:
package catalogo.json
class Catalogo {
String nombre
String descripcion
String url
Set <Parametros>parametros =[]
static hasMany = [parametros:Parametros]
int numeroParametros = parametros.size()
}
Et d'autres de classe:
package catalogo.json
class Parametros {
String tipoParametro
String json
static constraints = {
tipoParametro(nullable:true)
json(nullable:true)
}
}
Je ne sais pas comment mettre mon json dans la demande. Voici le message d'erreur quand je l'ai mis.
EXEMPLE:
J'ai MIS de la requête POST.
corps application/json
(ou text/json
est la même erreur) jeu de caractères utf-8
{"descripcion": "bla", "nombre" : "lalala", "numeroParametros":3, "parametros":[{
"tipoParametro":"string", "json":"bla"}],"url":"http://www.google.com"}
Et voici l'erreur:
Could not create new Catalogo due to errors:
grails.validation.ValidationErrors: 3 errors
Field error in object 'catalogo.json.Catalogo' on field 'descripcion': rejected value [null]; codes [catalogo.json.Catalogo.descripcion.nullable.error.catalogo.json.Catalogo.descripcion,catalogo.json.Catalogo.descripcion.nullable.error.descripcion,catalogo.json.Catalogo.descripcion.nullable.error.java.lang.String,catalogo.json.Catalogo.descripcion.nullable.error,catalogo.descripcion.nullable.error.catalogo.json.Catalogo.descripcion,catalogo.descripcion.nullable.error.descripcion,catalogo.descripcion.nullable.error.java.lang.String,catalogo.descripcion.nullable.error,catalogo.json.Catalogo.descripcion.nullable.catalogo.json.Catalogo.descripcion,catalogo.json.Catalogo.descripcion.nullable.descripcion,catalogo.json.Catalogo.descripcion.nullable.java.lang.String,catalogo.json.Catalogo.descripcion.nullable,catalogo.descripcion.nullable.catalogo.json.Catalogo.descripcion,catalogo.descripcion.nullable.descripcion,catalogo.descripcion.nullable.java.lang.String,catalogo.descripcion.nullable,nullable.catalogo.json.Catalogo.descripcion,nullable.descripcion,nullable.java.lang.String,nullable]; arguments [descripcion,class catalogo.json.Catalogo]; default message [La propiedad [{0}] de la clase [{1}] no puede ser nulo]
Field error in object 'catalogo.json.Catalogo' on field 'nombre': rejected value [null]; codes [catalogo.json.Catalogo.nombre.nullable.error.catalogo.json.Catalogo.nombre,catalogo.json.Catalogo.nombre.nullable.error.nombre,catalogo.json.Catalogo.nombre.nullable.error.java.lang.String,catalogo.json.Catalogo.nombre.nullable.error,catalogo.nombre.nullable.error.catalogo.json.Catalogo.nombre,catalogo.nombre.nullable.error.nombre,catalogo.nombre.nullable.error.java.lang.String,catalogo.nombre.nullable.error,catalogo.json.Catalogo.nombre.nullable.catalogo.json.Catalogo.nombre,catalogo.json.Catalogo.nombre.nullable.nombre,catalogo.json.Catalogo.nombre.nullable.java.lang.String,catalogo.json.Catalogo.nombre.nullable,catalogo.nombre.nullable.catalogo.json.Catalogo.nombre,catalogo.nombre.nullable.nombre,catalogo.nombre.nullable.java.lang.String,catalogo.nombre.nullable,nullable.catalogo.json.Catalogo.nombre,nullable.nombre,nullable.java.lang.String,nullable]; arguments [nombre,class catalogo.json.Catalogo]; default message [La propiedad [{0}] de la clase [{1}] no puede ser nulo]
Field error in object 'catalogo.json.Catalogo' on field 'url': rejected value [null]; codes [catalogo.json.Catalogo.url.nullable.error.catalogo.json.Catalogo.url,catalogo.json.Catalogo.url.nullable.error.url,catalogo.json.Catalogo.url.nullable.error.java.lang.String,catalogo.json.Catalogo.url.nullable.error,catalogo.url.nullable.error.catalogo.json.Catalogo.url,catalogo.url.nullable.error.url,catalogo.url.nullable.error.java.lang.String,catalogo.url.nullable.error,catalogo.json.Catalogo.url.nullable.catalogo.json.Catalogo.url,catalogo.json.Catalogo.url.nullable.url,catalogo.json.Catalogo.url.nullable.java.lang.String,catalogo.json.Catalogo.url.nullable,catalogo.url.nullable.catalogo.json.Catalogo.url,catalogo.url.nullable.url,catalogo.url.nullable.java.lang.String,catalogo.url.nullable,nullable.catalogo.json.Catalogo.url,nullable.url,nullable.java.lang.String,nullable]; arguments [url,class catalogo.json.Catalogo]; default message [La propiedad [{0}] de la clase [{1}] no puede ser nulo]
MODIFIER ICI MON CONTRÔLEUR:
package catalogo.json
import grails.converters.JSON
class CatalogoController {
def index = {
switch(request.method){
case "POST":
def catalogo = new Catalogo(params.catalogo)
if(catalogo.save()){
response.status = 201 //Created
render catalogo as JSON
}
else{
response.status = 500 //Internal Server Error
render "Could not create new Airport due to errors:\n
${catalogo.errors}"
}
break
case "GET":
if(params.id){render Catalogo.findById(params.id) as JSON}
else{render Catalogo.list() as JSON}
break
case "PUT":
def catalogo = Catalogo.findById(params.catalogo.id)
catalogo.properties = params.catalogo
if(catalogo.save()){
response.status = 200 //OK
render catalogo as JSON
}
else{
response.status = 500 //Internal Server Error
render "Could not create new Catalogo due to errors:\n ${catalogo.errors}"
}
break
case "DELETE":
if(params.id){
def catalogo = Catalogo.findById(params.id)
if(catalogo){
catalogo.delete()
render "Successfully Deleted."
}
else{
response.status = 404 //Not Found
render "${params.id} not found."
}
}
else{
response.status = 400 //Bad Request
render """DELETE request must include the ID code
Example: /rest/catalogo/id
"""
}
break
}
}
def list = {
if(!params.max) params.max = 10
def list = Catalogo.list(params)
withFormat{
html{
return [catalogoList:list]
}
json{
render list as JSON
}
}
}
}
Grâce
Comment êtes vous économisez de
regarder la mise à jour 🙂 merci!
Catalogo
dans le contrôleur?regarder la mise à jour 🙂 merci!
OriginalL'auteur natijauskas | 2013-05-29
Vous devez vous connecter pour publier un commentaire.
Voici comment cela devrait être fait dans les contrôleurs:-
RESTE Client:
Comment êtes-vous tester le RESTE WS? Vous devez avoir un REPOS client de tester le service? Ou vous pouvez utiliser RESTE la console d'extension dans Chrome pour tester votre service. Vous pouvez également utiliser un graal plugin reste-client-constructeur pour tester votre service. En termes simples, si vous ne voulez pas n'importe quel client de la mise en œuvre puis atleast un script pour tester votre service. HttpBuilder sera utile dans ce cas:. Quelque chose comme ceci est nécessaire pour tester votre service
Selon le RESTE de client que vous utilisez, il suffit de régler le json comme
request.JSON = "your json here"
, vous devriez être en mesure d'accéder à l'JSON comme je l'ai mentionné dans la réponse.Mais si j'ai mis ce JSON demande, j'ai 505 erreur et je sais pourquoi.Ce que je dois changer,s'il vous plaît? {"descripcion": "bla", "nombre" : "lalala", "numeroParametros":3, "parametros":[{ "tipoParametro":"string", "json":"bla"}],"url":"google.com"}, Où j'ai mis la demande.JSON="votre json ici"???? dans le contrôleur?Dans le client??MERCI
Voir ma mise à jour, visiter le lien que j'ai ajouté pour obtenir une idée de comment un service RESTful peuvent être testés.
Content d'avoir pu aider.
OriginalL'auteur dmahapatro