代码之家  ›  专栏  ›  技术社区  ›  Gnik

如何在swagger ui中获取POST数据?

  •  2
  • Gnik  · 技术社区  · 6 年前

    我已经在我的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);
            }
        }
    

    enter image description here

    所以我希望向POST-Data-JSON对象展示这个REST Api对前端应用程序的要求

    2 回复  |  直到 6 年前
        1
  •  1
  •   Helder Sepulveda    6 年前

    您使用的是旧版本的Swagger ui,看起来像2.x
    最新的更容易理解,请看这里:
    http://petstore.swagger.io/#/pet/addPet
    听起来你把这个给了其他开发者(前端开发者),在这种情况下,我强烈建议你寻找一种升级的方式,新版本有更好的用户体验,同时2.x UI版本也不再受支持。

    所以要回答你的问题:

    如何在swagger ui中获取POST数据?

    实际的反应,你可以得到它与[尝试它出来]按钮的招摇过市的用户界面。
    API所期望的POST数据Obj就是您在示例中看到的。

        2
  •  0
  •   Shawn GeertPt    6 年前

    我通过在模型上使用示例(技术上,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 串。