REST / JSON:如何生成示例请求?如何公开API?

时间:2015-01-31 12:49:09

标签: java json web-services rest wsdl

使用java,当我使用Soap公开一些Web服务时,我有一个描述所有输入/输出的WSDL,如果我在我的SoapUI客户端中使用这个WSDL,它将分析它并为我生成一些示例请求。 / p>

使用Rest / Json执行此操作的过程是什么。我知道wadl,但是SoapUI无法从中生成样本请求。我知道像Swagger套件这样的第三方工具,但这是唯一的方法吗?您是否必须使用一些外部文档工具来公开您的API并向用户显示一些示例请求?

2 个答案:

答案 0 :(得分:0)

还没有答案,所以几年后再来。

您需要使用OpenAPI Specification(将结果称为“ Swagger合同”),它定义了RESTful API的标准,与语言无关的接口,而忘了WADL。

这等效于SOAP WSDL,但更易于阅读,更易于生成且约束更轻。

使用Swagger,您可以使用“首先合同”(使用https://editor.swagger.io/设计合同)或“代码优先”,在那里您将使用Springfox之类的框架从代码+注释。最后一个是更容易的imo,它是“先订立合同”的另一种方式,这不像您是否在设计合同之前就实现了整个应用程序。

一旦URL上提供了“麻烦的合同”文档,您就可以部署一个swagger-ui网站以交互方式对其进行可视化:它将生成一些示例请求,并允许您在自定义请求后执行这些请求

答案 1 :(得分:-1)

 try {
           url="put your service url";
                HttpPost request = new HttpPost(url);
                request.setHeader("Accept", "application/json");
                request.setHeader("Content-type", "application/json");

                // Build JSON string
                JSONStringer item = new JSONStringer()
                        .object()
                        .key("password").value(pass)
                        .key("username").value(email)
                        .endObject();
                StringEntity entity = new StringEntity(item.toString());

                request.setEntity(entity);

                // Send request to WCF service
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpResponse response = httpClient.execute(request);
                HttpEntity entity1 = response.getEntity();
                InputStream stream = entity1.getContent();
                r = Splash.convertStreamToString(stream);
                    JSONObject jo = new JSONObject(r);
                s=  (Integer) jo.get("Flag");
                Log.d("json result is:", r);
            statusCode = response.getStatusLine().getStatusCode();

            } catch (Exception e) {
                e.printStackTrace();

            Log.d("error", "code"+0);
        }
        return s;
    }