WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   XML-RPC eller RESTful för API? (https://www.wn.se/forum/showthread.php?t=1050073)

pelmered 2011-09-17 23:07

XML-RPC eller RESTful för API?
 
Jag ska göra ett API som det kommer vara ganska många som ska kunna komma åt i framtiden så det bör vara en lösning som går att skala hyfsat bra.

Vi API:et kommer man både kunna hämta och ladda upp/spara data. Hur ration kommer vara är väl lite osäkert, men jag uppskattar att det kommer vara ungefär 50% gets och 50% puts/posts.

Det kommer vara en lösning med autentisering med api keys som det brukar vara med stängda API:er.

Det måste vara enkelt att implementera detta på klienterna som ska kommunicera med API:et.

Detta ska implementeras i CodeIgniter om det har någon betydelse för valet. Implementationer finns som librarys till CodeIgniter:
REST:
https://github.com/philsturgeon/codeigniter-restserver
http://net.tutsplus.com/tutorials/ph...codeigniter-2/
XML-RPC:
http://codeigniter.com/user_guide/libraries/xmlrpc.html

Fördelar/nackdelar med de båda?
Vad föredrar ni?

Jonas 2011-09-19 01:10

SOAP har större utsträckning när det gäller APIer, dels för att stödet finns med i dom flesta plattformarna och man slipper tänka på externa bibliotek för kommunikationen.

Magnus_A 2011-09-19 08:54

Citat:

Ursprungligen postat av Jonas (Inlägg 20417960)
SOAP har större utsträckning när det gäller APIer, dels för att stödet finns med i dom flesta plattformarna och man slipper tänka på externa bibliotek för kommunikationen.

Intressant. Läser man på svenska Wikipediasidan om SOAP verkar det vara helt värdelöst, men på den engelska så är tonen betydligt positivare.

Inte lätt att hitta rätt i detta. Skulle vara kul att höra mer om soap och eventuella fördelar och nackdelar.

Finns även denna tråd:
Bygga eget API, tips?

tartareandesire 2011-09-19 09:20

Citat:

Ursprungligen postat av Magnus_A (Inlägg 20417970)
Intressant. Läser man på svenska Wikipediasidan om SOAP verkar det vara helt värdelöst, men på den engelska så är tonen betydligt positivare.

Svenska Wikipedia håller genomgående ganska låg kvalitet om det inte rör rent svenska företeelser. Dåligt språk, mycket åsikter, konstiga formuleringar etc.

nosnaj 2011-09-19 10:07

Varken Google, Facebook eller Twitter kör väl SOAP?
Jag gillar RESTful

pelmered 2011-09-19 16:00

Citat:

Ursprungligen postat av Jonas (Inlägg 20417960)
SOAP har större utsträckning när det gäller APIer, dels för att stödet finns med i dom flesta plattformarna och man slipper tänka på externa bibliotek för kommunikationen.

Tack för svaret.
SOAP är väl det jag har bäst kunskap om(har läst en 15p kurs i SOA med SOAP), men jag valde bort det för att är lite väl komplext för att göra ett API. Men du har bra poäng med att det finns inbyggt stöd för SOAP i de allra flesta språk, det är en stor fördel. PHP har ju exempelvis SoapClient som gör att man kan göra SOAP-anrop med bara två rader:
PHP-kod:

$client = new SoapClient("http://uri/soap.wsdl");
$client->Function(); 

RESTful kan man ju lösa med cURL, men det blir ju några fler rader kod då(Är cURL aktiverat/installerat på webbhotell generellt sett?)

XML-RPC bör man väl använda någon extern klass eller bibliotek för att använda APIet.

En av de viktigaste sakerna är som sagt att det är något är enkelt att implementera och som det finns en del kunskap om bland utvecklare.

Citat:

Ursprungligen postat av Magnus_A (Inlägg 20417970)
Intressant. Läser man på svenska Wikipediasidan om SOAP verkar det vara helt värdelöst, men på den engelska så är tonen betydligt positivare.

Inte lätt att hitta rätt i detta. Skulle vara kul att höra mer om soap och eventuella fördelar och nackdelar.

Finns även denna tråd:
Bygga eget API, tips?

Tack!
Den tråden har jag kollat på och det var en hel del bra tips, men inte så mycket om vilken teknik man ska använda sig och framför allt inga för- eller nackdelar med de olika. Det är främst det jag är ute efter här även om generellt tips om vad man ska tänka på när man bygger ett API är mycket välkomna.



En sak till som jag funderat på är autentiseringen. Är det en bra idé att använda OAuth för detta?
Vad rekommenderar ni för att göra det både säkert och enkelt att implementera?

Magnus_A 2011-09-20 08:16

Jag kan ju bara säga att jag använder några API:er som jag betalar för och där är det REST för hela pengen samt att man autentiserar med en unik hash och ip-nummer., eller bara med unik hash.

pelmered 2011-09-20 13:20

Citat:

Ursprungligen postat av Magnus_A (Inlägg 20418104)
Jag kan ju bara säga att jag använder några API:er som jag betalar för och där är det REST för hela pengen samt att man autentiserar med en unik hash och ip-nummer., eller bara med unik hash.

Jo, det känner jag till. Man har en public key och en secret/private key.

Är det tillräckligt säkert om man använder digest authentication?

Jag kommer ha en del känslig kunddata i API:et så säkerheten är viktig.

JLE 2011-09-20 13:41

Jag röstar för JSON REST

nosnaj 2011-09-20 16:11

Citat:

Ursprungligen postat av Jonas (Inlägg 20417960)
SOAP har större utsträckning när det gäller APIer, dels för att stödet finns med i dom flesta plattformarna och man slipper tänka på externa bibliotek för kommunikationen.

Skulle bli förvånad om du hittar en plattform stom stödjer SOAP med inte REST :)
Tvärtom finns det säkert fullt med exempel på.

Kolla gärna om Android, iOS, Symbian osv är bra på SOAP och inte drar alltför mkt kraft.

MRDJ 2011-09-20 16:16

Citat:

Ursprungligen postat av ITisGood.se (Inlägg 20417868)
Jag ska göra ett API som det kommer vara ganska många som ska kunna komma åt i framtiden så det bör vara en lösning som går att skala hyfsat bra.

Vi API:et kommer man både kunna hämta och ladda upp/spara data. Hur ration kommer vara är väl lite osäkert, men jag uppskattar att det kommer vara ungefär 50% gets och 50% puts/posts.

Det kommer vara en lösning med autentisering med api keys som det brukar vara med stängda API:er.

Det måste vara enkelt att implementera detta på klienterna som ska kommunicera med API:et.

Detta ska implementeras i CodeIgniter om det har någon betydelse för valet. Implementationer finns som librarys till CodeIgniter:
REST:
https://github.com/philsturgeon/codeigniter-restserver
http://net.tutsplus.com/tutorials/ph...codeigniter-2/
XML-RPC:
http://codeigniter.com/user_guide/libraries/xmlrpc.html

Fördelar/nackdelar med de båda?
Vad föredrar ni?

Känns som att dem flesta kör REST nuförtiden, kanske för enkelheten.

Dem webservices jag har byggt så använder jag oftast Drupal services då finns möjligheten att köra olika resultattyper. ( RESTful,XML, XML-RPC,CSV).

Vill du använda API-nycklar finns även detta inbyggt i drupal servces.

pelmered 2011-09-20 18:39

Det blir nog REST då. Det var det jag lutade åt, men jag ville bara ha lite åsikter från andra så att man inte gör ett dumt val. Det är ju svårt att dra tillbaka ett API som är publikt när det väl är lanserat och jobbigt att ha flera olika API:er som ska underhållas och uppdateras.

Svaret kommer man kunna få i aningen XML, JSON eller CSV.

Tack så mycket för svaren!

Clarence 2011-09-20 20:11

Bra beslut. I princip alla större tjänster använder RESTful/REST-liknande APIer nu för tiden. Det skalar (ingen state ger stora fördelar både för cachning och nodoberoende), det krävs inget bibliotek för enkla request (kan ofta vara guld värda ett år senare då det kanske används i helt andra miljöer), du gör dig inte (nödvändigtvis) beroende av input- eller output-format osv.

Ska du ha något default-format är nästan alltid JSON att föredra i min mening. Filstorlek och prestandamässigt mycket bättre encode/decode i många språk (Objective C, Java/android, Javascript, PHP etc)

Tänk på att CSV är ett väldigt begränsat format om du utökar APIets funktioner senare. Men är det tabulär data som ska exporteras eller importeras kan det likväl vara VÄLDIGT nyttigt för Excel-typerna.

pelmered 2011-09-20 22:06

Tack för ett svar.

Jag tänkte faktiskt ha JSON som default. XML är ju betydligt jobbigare och bökigare + att det är massa onödig markup. JSON kan man ju konvertera till en array med en kodrad i de flesta språk och blir då väldigt smidig att jobba med.

CSV kommer nog vara användbart för vissa i vissa funktioner i API:et. Det fanns inbyggt stöd för detta redan i det REST Server-biblioteket jag hittade så det blir inte spciellt mycket extrajobb för att erbjuda det.

MRDJ 2011-09-22 15:34

Citat:

Ursprungligen postat av ITisGood.se (Inlägg 20418195)
Tack för ett svar.

Jag tänkte faktiskt ha JSON som default. XML är ju betydligt jobbigare och bökigare + att det är massa onödig markup. JSON kan man ju konvertera till en array med en kodrad i de flesta språk och blir då väldigt smidig att jobba med.

CSV kommer nog vara användbart för vissa i vissa funktioner i API:et. Det fanns inbyggt stöd för detta redan i det REST Server-biblioteket jag hittade så det blir inte spciellt mycket extrajobb för att erbjuda det.

http://drupal.org/project/services

kikat på det? :)

pelmered 2011-09-22 16:05

Citat:

Ursprungligen postat av MRDJ (Inlägg 20418419)

Nej, men drupal är inte aktuellt i det här projektet.

Jag kommer köra på ett system med CodeIgniter RestServer av Phil Sturgeon i grunden.
https://github.com/philsturgeon/codeigniter-restserver


Alla tider är GMT +2. Klockan är nu 00:37.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson