Maintenant que nous avons une API liée aux cercles, nous allons créer une API liée aux éléments. Cette fois (42e) j'ai participé et travaillé sur Python mini Hack-a-thon. http://connpass.com/event/5775/
Vous pouvez vous inscrire à partir d'une telle interface utilisateur.
Les choses à faire sont presque les mêmes que la dernière fois, mais cette fois le nombre de vignettes enregistrées est passé de 1 à 4
#Informations sur les articles vendus par le cercle. 1 entité=1 article
class CircleItem(BaseModel):
circleInfomation = ndb.KeyProperty(kind=CircleInfomation) #Cercle de vente
name = ndb.StringProperty() #Nom de l'article
thumbUrls1 = ndb.StringProperty() #Vignette de l'article partie 1
thumbUrls2 = ndb.StringProperty() #Vignette d'article partie 2
thumbUrls3 = ndb.StringProperty() #Vignette d'article partie 3
thumbUrls4 = ndb.StringProperty() #Vignette d'article partie 4
description = ndb.StringProperty() #Description de l'article
count = ndb.IntegerProperty() #Nombre d'unités vendues
price = ndb.IntegerProperty() #prix
Vous pouvez mettre une propriété pour chaque miniature, mais le but de la propriété miniature est le même. Il semble bon de les mettre tous dans une même propriété.
#Informations sur les articles vendus par le cercle. 1 entité=1 article
class CircleItem(BaseModel):
circleInfomation = ndb.KeyProperty(kind=CircleInfomation) #Cercle de vente
name = ndb.StringProperty() #Nom de l'article
thumbUrls = ndb.StringProperty(repeated=True) #URL de la miniature de l'article(Jusqu'à 4)
description = ndb.StringProperty() #Description de l'article
count = ndb.IntegerProperty() #Nombre d'unités vendues
price = ndb.IntegerProperty() #prix
J'ai fait ça.
Si vous essayez d'afficher plusieurs demandes sur le serveur séparément, le traitement du curseur sera effectué. L'AppEngineSDK a des fonctions utiles, j'essaie donc de joindre l'URL s'il y a une continuation basée sur cela. Webapp2 # uri_for était utile pour la génération d'URL.
#Requête DataStore
entitylist, next_curs, more = CircleItem.query(CircleItem.circleInfomation==circleInfo.key).fetch_page(limit, start_cursor=cursor)
#Générez l'URL suivante s'il y a une suite
next_url = None
if more:
next_url = webapp2.uri_for('Infomation',circleid=circleid,limit=limit,cursor=next_curs.urlsafe())
#Définir ces données
itemList = []
for e in entitylist:
item = Common.createCircleItemResponseFromEntity(e)
itemList.append(item)
res = dict(
itemList = itemList,
next = next_url
)
#Convertir en JSON et revenir au client
Common.writeUserResponseSuccess(self, res )
Par exemple http://localhost:8080/user/api/circleitem/infomation?circleid=1 Si vous faites une telle demande,
{
"response":
{
"status":200
},
"next":"http://localhost:8080/user/api/circleitem/infomation?circleid=1&limit=1&cursor=E-ABAIICLWoSZGV2fmZyZWVtYXJrZXQtYXBwchcLEgpDaXJjbGVJdGVtGICAgICA4JcJDBQ=",
"itemList":
[
{
"price":1000,
"thumbUrls":[
"http://localhost:8080/user/api/circleitem/thumbnail?circleitemid=5171003185430528&no=0"
],
"count":12,
"name":"Nom de l'article",
"description":"Détails de l'article"}
]
}
Lorsqu'une telle requête est renvoyée, `" next ":" http: // localhost: 8080 / user / api / circleitem / infomation? Circleid = 1 & limit = 1 & cursor = E-ABAIICLWoSZGV2fmZyZyZWVtYXJrZXQtYXBwchcLEgpDaXJjbGVJdg Vous pouvez les mettre en ordre.
C'est comme ça que j'ai fait la branche à ce jour https://github.com/nagai/freemarket/tree/20140412
Je souhaite changer la couleur de l'interface utilisateur
Méthode d'expédition inconnue
Je veux décider de la gestion des erreurs Il est préférable de décider quoi faire si la demande du client est invalide ・ Redémarrez l'application ・ Faites à nouveau la même demande Est ce juste?
Je veux tester En ce moment, j'expérimente le client REST avancé de l'extension Chrome. Cela demande de plus en plus de travail, alors j'aimerais vous présenter une autre méthode.
Ensuite, nous allons créer le côté client.
Recommended Posts