6

REST を使用して POST を使用して新しいエントリを作成する場合、Google などの一部の APIではリクエストの一部として XML を送信するように指定されていますが、他の API ではキーと値のペアを送信するように指定されています。REST POST の標準またはベスト プラクティスはありますか?

4

4 に答える 4

4

Atom などの標準形式が存在する場合は、それらを使用するように努力する必要があるという条件付きで、機能する表現形式であれば問題ありません。

更新Roy Fielding (HTTP 標準の共著者であり、博士論文で REST を明確に述べた人物) からの関連する引用を次に示します。Web サービスで使用される表現をどのように設計するかは、非常に重要です。

REST API は、リソースを表すために使用されるメディア タイプを定義するために、その記述作業のほとんどすべてを費やす必要があります [...]

続きのQ&Aを必ずお読みください。

于 2009-10-02T01:55:25.563 に答える
1

REST サービスの実装者に依存します。

REST サービスが既存の html HTML フォームを適応させたものである場合は、一般に、キーと値のペアをポストする方が簡単に開始できます。

JavaScript から情報を投稿する場合、通常は JSON を使用する方が簡単です。

XML がよく使用されるのは、人間にとって理解しやすく、XML を処理できるすべての言語/プラットフォームのツールが山ほどあるためです。

于 2009-10-02T02:15:41.357 に答える
1

最も単純なものを使用することをお勧めします。それが REST のすべてだからです。以下のコード スニペットは、私が投稿を行う方法です。特にコードを探していたわけではないことは承知していますが、以下の API (httpClient) はうまく機能します。次に、コーダーが常に使用しているツールを使用してデコードします ( request.getParameter())。これが、REST が SOAP と異なる点だと思います。難しくしないで!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;
}
于 2009-10-02T20:06:38.460 に答える
-7

SOAPは WebServices の標準です (WebServices と REST の間で少し混乱していると思います)。

しかし、それは実際には実装者次第です。

于 2009-10-02T01:59:23.863 に答える