Posted by jollyCocoa on May 30, 2010 at 1:54pm
Jag sitter och bygger någon form av community-site i Drupal. Jag ska även bygga en iPhone-app till den och för klienten behöver jag ett RESTful API att snacka mot. En sökning bland Drupals moduler ger en handfull alternativ, men många är discontinued eller avstängda av olika skäl, bl.a. Pga bristande säkerhet. Så min fråga är, vilken modul rekomenderas för att bygga en RESTful service utifrån en befintlig Drupal-site (version 6.x)?
/jollyCocoa
sökningar på Drupals modulsida:
http://drupal.org/project/modules?text=RESTful%20API
Comments
Använd modulen Services
Använd modulen Services kombinerat med REST-servern:
http://drupal.org/project/services
http://drupal.org/project/rest_server
Hugo har skrivit en guide som antagligen kan vara till hjälp:
http://goodold.se/blog/tech/integrate-iphone-app-drupal
Det är dock rent konceptuellt enklare att implementera en web service för iPhone eller Android med RPC snarare än REST.
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
När du säger att det
När du säger att det konceptuellt är enklare med RPC-xxx antar jag att du syftar på service-sidan, för det stämmer ju inte på klientsida (iPhonen)..?
Ja, en resursorienterad
Ja, en resursorienterad service kräver mer abstraktion eftersom du skapar en abstrakt resurslager på din Drupalsajt. Det gäller inte bara servern utan även klienten som måste hantera resurser snarare än aktiviteter, vilket inte alltid lämpar sig. Här finns en artiklar som diskuterar detta:
http://www.ibm.com/developerworks/webservices/library/ws-restvsoap/
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
Föredrar RESTfulness för iPhone
Jag förstår inte riktigt hur du menar att klienten skulle vinna på att ha en aktivitetsorienterad webservice. Min tolkning är den raka motsatsen, eftersom vi talar främst om mobila klienter. Det känns som om man i slutändan ändå landar i att använda SOAP ovanpå HTTP (i alla fall för mobila enheter), som i grund och botten har funktioner för att åstadkomma allt du vill göra i SOAP. Man skapar ytterligare ett skal som ökar komplexiteten och overhead på telefonen vid request-generering, vilket i mobila sammanhang är kontraproduktivt.
En av de största vinsterna med RPC-SOAP, som också framhålls i artikeln du länkar till är async-sessioner. Men, en av de största utmaningarna vid mobil utveckling är att minimera mängden datatrafik som skickas och längden på varje anslutning, detta bland annat för att spara på batteri och i viss mån för att uppkopplingshastigheten många gånger är crap. Med andra ord är asyncrona sessioner ingenting som jag direkt har saknat i iPhone-sammanhang.
RPC-SOAP har sitt existensberättigande, speciellt vid server till server-kommunikation. Och jag har ingen som helst ambition att starta ett REST vs RPC SOAP Flame War. Men för mobila enheter och för att implementera kommunikationen mellan mobil och en eventuell site skapad i Drupal, föredrar jag nog ett RESTful API.
:)
/jollyCocoa
Edit: Lite mer nyanserade formuleringar.
Mer info
Här kan du också hitta en del färsk information om modulen Services i olika format.
http://www.lullabot.com/podcasts/drupal-voices-105-greg-dunlap-on-servic...
/Adam
Tack för tips! Tittar igenom
Tack för tips! Tittar igenom och återkommer om jag har några fler funderingar.
Inte fått att funka!
Ok, nu har jag försökt få till Services att funka. Har bland annat följt instruktionerna i
http://goodold.se/blog/tech/integrate-iphone-app-drupal
som solipsis tipsade om. Dessvärre får jag det inte att funka. Jag har aktiverat "OAuth Authentication", "Node Resource", "Query Builder" och "REST Server" med tillhörande moduler, enligt instruktionerna från exemplet i länken ovan, men när jag sedan går in i admin/build/services eller admin/build/services/rest, så får jag en helt tom sida. Inga felmeddelanden eller någonting. Bara helt vit och innehållslös sida. Samma sak gäller om jag försöker nå en nod visa RESTful-gränssnittet (services/rest/node/1).
Jag måste erkänna att jag har lite svårt för den här biten av Drupal-användning/utveckling. Jag upplever inte att jag får några som helst indikationer på vad som skulle kunna vara fel, eller vilka moduler som eventuellt inte matchar varandra.
Någon som kan ge mig lite utförliga tips om hur jag går vidare!? Måste jag ge mig in i kodning av en egen modul för att få detta att funka?
Tack för eventuella tips!
/jollyCocoa
Får litegrann känslan av att
Får litegrann känslan av att någon modul brunnit när Drupal Core uppdaterats. Kan det vara så!? Enligt tidigare nämnda exempel skulle det i princip bara vara att aktivera nämnda moduler för att få REST-tillgång till sighten.
Någon som byggt ett RESTful-gränssnitt med dessa moduler som skulle kunna ge mig lite mer tips än vad exemplet erbjuder!?
/jollyCocoa
Krävs speciella inställningar för MAMP!?
Slog mig just, kan det vara så att någon av dessa moduler kräver inställningar eller funktioner som min standard MAMP-installation på Mac inte har installerad!? I sådana fall, finns det någon som kan hjälpa mig fundera ut vilka inställningar detta skulle kunna vara!?