REST/JSON:如何生成示例请求?如何公开 API?
Posted
技术标签:
【中文标题】REST/JSON:如何生成示例请求?如何公开 API?【英文标题】:REST/JSON : How to generate sample requests ? How to expose API? 【发布时间】:2015-03-30 20:46:14 【问题描述】:使用 java,当我使用 Soap 公开一些 Web 服务时,我有一个描述所有输入/输出的 WSDL,如果我在我的 SoapUI 客户端中使用这个 WSDL,它会分析它并为我生成一些示例请求。
使用 Rest/Json 执行此操作的过程是什么。我知道 wadl,但 SoapUI 无法从中生成示例请求。我知道像 Swagger 套件这样的第三方工具,但这是唯一的方法吗?您是否必须使用一些外部文档工具来公开您的 API 并向用户展示一些示例请求?
【问题讨论】:
你能解决这个问题吗? 好吧,招摇现在是一个“标准”:en.wikipedia.org/wiki/OpenAPI_Specification 【参考方案1】:目前还没有答案,所以这是几年后的答案。
您需要使用OpenAPI Specification(我们将结果称为“Swagger 合约”),它定义了一个标准的、与语言无关的 RESTful API 接口,而忘记了 WADL。
这将等效于 SOAP WSDL,但更易于阅读、更易于生成且约束更轻松。
使用 Swagger,您可以在“合约优先”(使用 https://editor.swagger.io/ 设计合约)或“代码优先”中工作,您将使用像 Springfox 这样的框架从代码 + 注释生成 swagger 合约。最后一个更容易 imo,它只是“合同优先”的另一种方式,不像你在设计合同之前实现整个应用程序。
在 URL 上获得“swagger contract”文档后,您可以部署一个 swagger-ui 网站以交互方式对其进行可视化:它将生成一些示例请求,并允许您在自定义请求后执行这些请求.
【讨论】:
【参考方案2】: 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;
【讨论】:
你写的任何东西都与我的问题有关?以上是关于REST/JSON:如何生成示例请求?如何公开 API?的主要内容,如果未能解决你的问题,请参考以下文章
如何在访问原始请求正文的同时为 Web API 帮助页面生成正文参数/示例请求
如何使用 REST/JSON/GET/POST 从我的节点服务器访问我的 couchdb?
Spring Security (OAuth):如何在未公开 restTemplate 时添加请求标头?