Pergunta

Quando você usa REST para criar uma nova entrada usando um POST, eu vejo algumas APIs como Google de especificar que você enviar XML como parte do pedido, enquanto outros especificar que você enviar pares de chave / valor. Existe um padrão ou melhor prática para repouso pós-s?

Foi útil?

Solução

Depende do implementador de serviço REST.

Se o serviço REST é uma adaptação de um existente html HTML valor pares forma-chave post são geralmente mais fáceis de começar.

Ao postar informações de JavaScript é geralmente mais fácil de usar JSON.

XML é usado frequentemente porque é fácil para os seres humanos para compreender e há montes de ferramentas em cada idioma / plataforma que pode lidar com ele.

Outras dicas

Qualquer formato de representação que funciona é ok, com a estipulação de que você deve tentar muito difícil de usar formatos padrão como Atom, onde eles existem.

Atualizar Aqui está uma quote relevante de Roy Fielding (co-autor do padrão HTTP, ea pessoa que articulou RESTO em sua tese de PhD). Como você projeta as representações usadas em seu serviço web é de importância central:

A API REST deve gastar quase todos do seu esforço descritivo na definição o tipo de material utilizado (s) para representando recursos [...]

Certifique-se de ler a follow-on Q & A.

Eu sugiro usar o que é mais simples porque é isso que REST é tudo. O trecho de código abaixo é como eu faço um post. Eu sei que você não estava olhando para o código especificamente, mas a API abaixo (httpclient) funciona muito bem. Então você decodificá-lo usando as ferramentas que programadores sempre usados ??(request.getParameter()). Eu acredito que este é o que define DESCANSAR além de SOAP. Não torná-lo difícil! Use 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;
}

SABÃO é o padrão para WebServices (Acho que você está um pouco confuso bewteen WebServices e REST).

Mas é realmente até os implementadores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top