Quando si utilizza REST per creare una nuova voce utilizzando un POST, vedo alcune API come Google's specificare che si invia XML come parte della richiesta mentre altri specificano che si inviano coppie chiave/valore. Esiste uno standard o una best practice per POST-REST?Formato post REST
risposta
Dipende dall'implementatore del servizio REST.
Se il servizio REST è un adattamento di un modulo HTML HTML esistente, è generalmente più semplice iniziare con le coppie di valori chiave.
Quando si pubblicano informazioni da JavaScript, in genere è più semplice utilizzare JSON.
XML è spesso utilizzato perché è facile da comprendere per gli esseri umani e ci sono un sacco di strumenti in ogni lingua/piattaforma che può occuparsene.
Qualsiasi formato di rappresentazione che funzioni va bene, con la clausola che si dovrebbe provare molto duramente ad usare formati standard come Atom dove esistono.
Aggiornamento Ecco un relevant quote da Roy Fielding (co-autore dello standard HTTP, e la persona che articola REST nella sua tesi di dottorato). Come si progetta le rappresentazioni utilizzati nel servizio web è di centrale importanza:
A REST API dovrebbe spendere quasi tutta del suo sforzo descrittivo nella definizione il tipo di supporto (s) utilizzato per risorse che rappresentano [.. .]
assicurarsi di leggere il follow-on Q & A.
SOAP è lo standard per servizi Web (Penso che tu sia un po 'confuso bewteen WebServices e REST).
Ma è davvero compito degli implementatori.
Sentitevi liberi di spiegare ciò che è sbagliato con questo annuncio ... –
"Web Services" è ora un termine più generale che descrive il modo di strutturare il Web in modo che sia più comodo per i programmi di navigare e operare su come è per gli umani. SOAP è un insieme di standard W3C che hanno questo obiettivo e SOAP utilizza esclusivamente XML. REST non è uno standard di per sé, ma uno stile architettonico per la strutturazione di servizi Web che sfrutta al massimo l'HTTP e altri standard Web. Richardson and Ruby * RESTful Web Services * (O'Reilly) è una risorsa meravigliosa per conoscere l'approccio REST. –
Sì ... ma puramente con un "WebService" non significa che sia REST. REST è più di questo. Ma questo ragazzo in realtà non vuole REST completo, vuole solo uno standard per i servizi Web. Quindi la mia risposta. –
Suggerisco di utilizzare ciò che è più semplice perché è quello che riguarda il REST. Il frammento di codice qui sotto è come faccio un post. So che non stavi cercando codice specifico, ma l'API di seguito (httpClient) funziona alla grande. Quindi decodificarlo utilizzando gli strumenti che i codificatori hanno sempre utilizzato (request.getParameter()
). Credo che questo sia ciò che distingue REST da SOAP. Non renderlo difficile! Usa HTTP!
public void testHttpClient() {
PostMethod pMethod = null;
pMethod = new PostMethod("...url...");
NameValuePair[] data = {new NameValuePair("activeFlag", "yes"), new NameValuePair("custCode", "B010"), new NameValuePair("comments", "mark is cool")};
pMethod.setRequestBody(data);
this.makeCall(pMethod);
}
private String makeCall(HttpMethod method) {
String response = null;
HttpClient client = new HttpClient();
client.getParams().setAuthenticationPreemptive(true);
client.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(this.logon, this.pass));
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
method.getParams().setIntParameter(HttpMethodParams.SO_TIMEOUT, 5000);
try {
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
String aLine = null;
StringBuffer sb = new StringBuffer();
BufferedReader in = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream()));
while ((aLine = in.readLine()) != null) {
sb.append(aLine.trim());
System.out.println(aLine);
}
in.close();
response = sb.toString();
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
method.releaseConnection();
}
return response;
}
- 1. Problemi POST API Django Rest
- 2. AFNetworking POST to REST webservice
- 3. Dati POST in formato JSON
- 4. GET vs POST nel servizio Web REST
- 5. XML POST REST Richiesta utilizzando Python
- 6. REST - HTTP Post Multipart con JSON
- 7. camelCase dati POST in Django REST Framework
- 8. Formato corretto per HTTP POST utilizzando QNetworkRequest
- 9. Problema con POST JSON per un servizio REST Jersey
- 10. 405 "Metodo POST non consentito" nel framework Django REST
- 11. Perl: impostare programmaticamente il parametro POST utilizzando REST :: Modulo client
- 12. REST - ottieni un numero casuale GET o POST?
- 13. Autorizzazione livello oggetto Python Rest Framework su POST
- 14. REST - Creazione di risorse annidate con singolo POST
- 15. Operazione POST REST WCF 413 (Entità troppo grande) errore
- 16. Acessing POST dati dei campi senza forma (REST API) Django
- 17. powershell HTTP Post REST API autenticazione di base
- 18. Come consumare REST in C# inclusi PUT, POST e DELETE?
- 19. Django REST Framework profondità diversa per POST/PUT?
- 20. Spring Boot Data Rest POST restituisce 204 ma solo SELECTS
- 21. Django Rest Framework aggiornamento POST se esistente o creare
- 22. REST API POST Reazione dopo la creazione di più oggetti?
- 23. API REST WP recuperano i messaggi dal tipo di post
- 24. XML/JSON POST con RequestBody in Spring REST Controller
- 25. Web API 2 Simulazione richiesta POST in POSTMAN Rest Client
- 26. primavera dati REST - POST nuova entità con le relazioni
- 27. Facoltativamente disabilitare il formato HATEOAS in Spring Data Rest
- 28. Dati modulo POST restangolare in formato json in JS angolare
- 29. http delete with REST
- 30. Tapestry + REST
XML più facile da capire rispetto a JSON? – Kevin