Nachdem wir nun eine kreisbezogene API haben, erstellen wir eine artikelbezogene API. Dieses Mal (42.) habe ich an Python mini Hack-a-thon teilgenommen und daran gearbeitet. http://connpass.com/event/5775/
Sie können sich über eine solche Benutzeroberfläche registrieren.
Die Dinge, die zu tun sind, sind fast die gleichen wie beim letzten Mal, aber dieses Mal hat sich die Anzahl der registrierten Miniaturansichten von 1 auf 4 geändert
#Vom Kreis verkaufte Artikelinformationen. 1 Entität=1 Artikel
class CircleItem(BaseModel):
circleInfomation = ndb.KeyProperty(kind=CircleInfomation) #Verkaufskreis
name = ndb.StringProperty() #Artikelname
thumbUrls1 = ndb.StringProperty() #Artikel Miniaturbild Teil 1
thumbUrls2 = ndb.StringProperty() #Artikel Miniaturbild Teil 2
thumbUrls3 = ndb.StringProperty() #Artikel Miniaturbild Teil 3
thumbUrls4 = ndb.StringProperty() #Artikel Miniaturbild Teil 4
description = ndb.StringProperty() #Artikelbeschreibung
count = ndb.IntegerProperty() #Anzahl der verkauften Einheiten
price = ndb.IntegerProperty() #Preis
Sie können für jede Miniaturansicht eine Eigenschaft einfügen, der Zweck der Miniaturansichtseigenschaft ist jedoch der gleiche. Es scheint gut, sie alle in einer Eigenschaft zusammenzufassen.
#Vom Kreis verkaufte Artikelinformationen. 1 Entität=1 Artikel
class CircleItem(BaseModel):
circleInfomation = ndb.KeyProperty(kind=CircleInfomation) #Verkaufskreis
name = ndb.StringProperty() #Artikelname
thumbUrls = ndb.StringProperty(repeated=True) #URL der Miniaturansicht des Elements(Bis zu 4)
description = ndb.StringProperty() #Artikelbeschreibung
count = ndb.IntegerProperty() #Anzahl der verkauften Einheiten
price = ndb.IntegerProperty() #Preis
Ich tat dies.
Wenn Sie versuchen, mehrere Anforderungen auf dem Server separat anzuzeigen, wird die Cursorverarbeitung ausgeführt. Das AppEngineSDK verfügt über nützliche Funktionen, daher versuche ich, die URL anzuhängen, wenn darauf eine Fortsetzung basiert. Webapp2 # uri_for war nützlich für die URL-Generierung.
#DataStore abfragen
entitylist, next_curs, more = CircleItem.query(CircleItem.circleInfomation==circleInfo.key).fetch_page(limit, start_cursor=cursor)
#Generieren Sie die folgende URL, wenn eine Fortsetzung vorliegt
next_url = None
if more:
next_url = webapp2.uri_for('Infomation',circleid=circleid,limit=limit,cursor=next_curs.urlsafe())
#Stellen Sie diese Daten ein
itemList = []
for e in entitylist:
item = Common.createCircleItemResponseFromEntity(e)
itemList.append(item)
res = dict(
itemList = itemList,
next = next_url
)
#In JSON konvertieren und zum Client zurückkehren
Common.writeUserResponseSuccess(self, res )
Zum Beispiel http://localhost:8080/user/api/circleitem/infomation?circleid=1 Wenn Sie eine solche Anfrage stellen,
{
"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":"Artikelname",
"description":"Artikeldetails"}
]
}
Wenn eine solche Anfrage zurückgegeben wird, "next": http: // localhost: 8080 / user / api / circleitem / infomation? Circleid = 1 & limit = 1 & cursor = Sie können sie in Ordnung bringen.
So habe ich den Zweig bis heute gemacht https://github.com/nagai/freemarket/tree/20140412
Ich möchte die Farbe der Benutzeroberfläche ändern
Unbekannte Versandart
Ich möchte die Fehlerbehandlung entscheiden Es ist besser zu entscheiden, was zu tun ist, wenn die Anfrage des Kunden ungültig ist ・ Starten Sie die App neu ・ Stellen Sie dieselbe Anfrage erneut Ist es richtig?
Ich möchte testen Im Moment experimentiere ich mit dem Advanced REST-Client von Chrome Extention. Es wird immer mehr Arbeit, deshalb möchte ich eine andere Methode vorstellen.
Als nächstes erstellen wir die Client-Seite.
Recommended Posts