2016-03-18 3 views
1

J'essaie d'utiliser les API REST intégrées à Broadleaf eCommerce. Les instructions sur leur site disent d'ajouter une référence à /WEB-INF/applicationContext-rest-api.xml dans web.xml, mais /WEB-INF/applicationContext-rest-api.xml n'existe pas. C'était renamed on January 14, 2015 par @phillipuniverse. Le web.xml actuel du DemoSite has a reference au nouveau nom de fichier (applicationContext-rest-api-security.xml). Donc, il semble que rien ne doit être fait pour activer REST - ils sont activés par défaut.Comment utiliser l'API REST Broadleaf?

Cependant, lorsque je tente d'y accéder, je reçois:

org.springframework.web.HttpMediaTypeNotSupportedException: Type de contenu 'null' non pris en charge

Je suis vraiment envoie une Content- Type d'en-tête. Cela semble être une exception incorrecte basée sur un known bug in Jackson. Cela a quelque chose à voir avec les types n'étant pas sérialisables.

Je pense que cela signifie que les classes wrapper doivent être corrigées. Ils sont ce qui est sérialisé. (à droite?) J'essaie de comprendre si c'est parce que je fais quelque chose de mal, ou si c'est un bug dans BroadleafCommerce.

En outre, je suis un peu nouveau avec Maven, donc je ne suis pas sûr de savoir comment résoudre ce problème. Le DemoSite tire BroadLeafCommerce d'un repo. Comment puis-je lui dire de regarder mon clone git local de BroadleafCommerce? (Je sais que cela est une autre question, mais il est lié, car il est la seule façon que je peux penser à régler le problème.)

Répondre

1

2 façons de résoudre votre problème:

  1. Définir un en-tête Content-Type HTTP soit application/json (par défaut) ou application/xml
  2. Retirez tous les consumes de tous les points d'extrémité, sauf pour ceux qui ont un @RequestBody

par exemple, si vous ha ve un point final annoté avec:

@RequestMapping(value = "/cart", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}, consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}) public class CartEndpoint extends org.broadleafcommerce.core.web.api.endpoint.order.CartEndpoint

Vous pouvez le remplacer par: @RequestMapping(value = "/cart", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}) public class CartEndpoint extends org.broadleafcommerce.core.web.api.endpoint.order.CartEndpoint

+0

Je suis en train de l'en-tête Content-Type. Le message d'erreur est trompeur. Voir le lien que j'ai inclus ci-dessus à propos d'un bug dans Jackson. –

+0

Avez-vous essayé de supprimer tous les attributs de consommation de @RequestMapping? Je suis à peu près sûr que ça n'a rien à voir avec un bug d'analyse de Jackson. Quel point final essayez-vous de frapper spécifiquement? Est-ce que vous pensez réellement que la désérialisation se produira? – phillipuniverse

+0

J'ai supprimé le 'consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}' et cela a fonctionné. –