我在SpringBoot应用程序中配置了swagger-ui。
以下是我的代码
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
openAppUrl("8080/swagger-ui.html");
}
public static void openAppUrl(String port) {
String url = "http://localhost:" + port;
String os = System.getProperty("os.name").toLowerCase();
Runtime rt = Runtime.getRuntime();
try {
if (os.indexOf("win") >= 0) {
rt.exec("rundll32 url.dll,FileProtocolHandler " + url);
} else if (os.indexOf("mac") >= 0) {
try {
rt.exec("open " + url);
} catch (IOException e) {
System.out.println(e);
}
} else if (os.indexOf("nix") >= 0 || os.indexOf("nux") >= 0) {
String[] browsers = { "epiphany", "firefox", "mozilla", "konqueror", "netscape", "opera", "links",
"lynx" };
StringBuffer cmd = new StringBuffer();
for (int i = 0; i < browsers.length; i++)
cmd.append((i == 0 ? "" : " || ") + browsers[i] + " \"" + url + "\" ");
rt.exec(new String[] { "sh", "-c", cmd.toString() });
} else {
return;
}
} catch (Exception e) {
return;
}
return;
}
}
我的控制器
package com. server.spring.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com. server.spring.domain.User;
import com. server.spring.service.UserService;
@RestController
@RequestMapping(UsersController.ROOT_RESOURCE_PATH)
public class UsersController {
public static final String ROOT_RESOURCE_PATH = "/rest/secure/v1/users";
@Autowired
private UserService userService;
@RequestMapping(value = "/list", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public List<User> getUsers() {
return userService.getAllUsers();
}
@RequestMapping(value = "/create", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public User createUser(@RequestBody User user) {
return userService.saveUser(user);
}
}
这里显示了Rest API URL,HTTP方法POST,响应JSON对象。但我没有看到API调用中预期的POST数据Obj。因此,如果没有这个,前端开发人员就无法使用相应的API。
所以我希望显示POST Data JSON对象这个REST Api从前端应用程序需要什么
这是正确的方法还是我需要修改它以获得预期的方式?
答案 0 :(得分:1)
您正在使用旧版本的Swagger-ui,看起来像2.x
最新版本更容易理解,请在此处查看:
http://petstore.swagger.io/#/pet/addPet
这听起来像是你给其他开发人员(前端开发人员),在这种情况下我强烈建议你寻找升级的方法,新版本有更好的用户体验,2.x UI版本是不再支持。
所以回答你的问题:
如何在swagger-ui中获取POST数据?
您可以通过swagger-ui的[try-it-out]按钮获得实际响应。
API所期望的POST数据Obj就是您在示例中看到的。
答案 1 :(得分:0)
通过在模型上使用示例(Techincally,API模型属性),我获得了模型属性以正确附加到正文。但是,我对此的经验不包括Spring,我确信文档类似。您需要在@ApiModelProperty
课程中添加User
注释。
public class User {
private String firstName;
private String lastName;
@ApiModelProperty(value = "User's first name.", example = "John")
public String getFirstName(){}
//...setters
@ApiModelProperty(value = "User's last name.", example = "Smith")
public String getLastName(){}
//...setters
// etc
}
这会使用example
字符串填充swagger文档POST / PUT / etc正文。